我试着写了一下,但有几个问题:
1、创建了块和属性参照,但属性参照看不见。
2、若用创建无名块,属性参照也看不见。
3、属性参照的对齐方式及对齐点、旋转角度不会设置。
4、最重要的是,每运行一次该程序,创建的块就会包含上一次运行时创建的图形!
请飞哥帮忙看一下,谢谢了!!!
-
- ;;;
- (defun testBlk (/ pt pt1 t2 pt3 pt4 selectedObj ag)
- (setq adoc (vla-get-ActiveDocument (vlax-get-acad-object)))
- (setq mSpace (vla-get-ModelSpace adoc))
- (setq entc (car (entsel)))
- (while (= (car (setq pt (grread 2 4))) 5)
- (setq pt (cadr pt))
- (setq pt2 (vlax-curve-getClosestPointTo entc pt t))
- (SETQ ag (ANGLE pt2 pt))
- (SETQ pt1 (POLAR pt2 (- ag (/ PI 6)) (/ 10 (cos (/ pi 6)))))
- (SETQ pt3 (POLAR pt2 (+ ag (/ PI 6)) (/ 5 (cos (/ pi 6)))))
- (SETQ pt4 (POLAR pt2 (- ag (/ PI 6)) (/ 5 (cos (/ pi 6)))))
- (setq 2dpts (apply 'append (mapcar '3d->2d (list pt1 pt2 pt3 pt4))))
- )
- (setq blocks (vla-get-blocks adoc))
- (setq blockObj (vla-add blocks (vlax-3D-point pt2) "KR_CCD"))
- (setq pt5 (polar pt2 ag (+ 0.5 5 (/ 3 2)))
- ag2 (/ (* ag 180) PI)
- )
- (setq attang (COND (( AG2 30) ( AG2 210) (VariantArray 2dpts)
- )
- (setq blk (vla-insertblock
- mSpace
- (vlax-3D-point pt2)
- "KR_CCD"
- 1
- 1
- 1
- 0
- )
- )
- (setvar "osmode" var1)
- )
还有,我想用GRREAD函数实现动态,但没成功! |