几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量

几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量 (http://www.dimcax.com/hust/index.php)
-   ObjectARX(AutoLISP) (http://www.dimcax.com/hust/forumdisplay.php?f=178)
-   -   用vba如何复选insert命令中的“在屏幕上指定”复选框? (http://www.dimcax.com/hust/showthread.php?t=12410)

yang686526 2009-04-27 11:10 AM

用vba如何复选insert命令中的“在屏幕上指定”复选框?
 
用vba如何复选insert命令中的“在屏幕上指定”复选框?
www.dimcax.com
用vba如何复选insert命令中的“在屏幕上指定”复选框?
如题
att

好像不容易实现
你做的工作时插入块,根本不需要调用cad命令,反而低效了。调用插入块函数,其中有个插入点参数,采取屏幕取点的方法,等同实现“在屏幕指定”

用-insert命令
在insert前加一个减号,就可输入参数了

我的情况是:块的位置水平,插入后需要旋转,而旋转角度未知(但块上有两个固定点位置已知),我使用旋转角度在屏幕上指定,就可以一次旋转到位,不知道这样是不是更土了。。。。
ms:有很多这样的块,这样是不是需要每个插入都需要和人交互?那就更麻烦了,有没有其他好办法?谢谢!

就用-insert命令就可以实现
注意命令后面要带参数

旋转角度未知,即旋转角度事先不确定,如果用户不干预怎么解决呢?除非你找到了它的规律,然后再赋以该规律让程序自动判断

你可以利用程序确定块其中一点的位置,然后计算出两点连线到水平线的夹角,再旋转该角度,即可保持两点重合了
利用函数 thisdrawing.utility.anglefromxaxis

(defun c:huu( / strtemp point)
(setvar "cmdecho" 0)
(if (= strname1 nil) (setq strname1 ""))
(setq strtemp (getstring (strcat "\n请输入型号<" strname1 ">:")))
(if (= strtemp "")
(if (= strname1 "")
(quit)
)
(setq strname1 strtemp)
)
(setq point (getpoint "请选择插入点:"))
(if (= point "") (quit))
(command "-insert" (strcat strname1 ".dwg") point "1" "1" pause "explode" "l")
(princ)
)

(command "-vbarun" "changetext.dvb!module1.joining" "-insert" "joining" "s" "1")
可用vba宏changetext.dvb!module1.joining创建块


所有的时间均为北京时间。 现在的时间是 11:27 PM.