多线mline绘制vla方法
本帖最后由 dcl1214 于 2024-4-17 09:20 编辑(defun $make-mline$ (pts lst)
;($make-mline$(list (getpoint)(getpoint))(list(cons "比例" "随便")))
(setvar 'CELTSCALE 1.0)
(setvar 'LTSCALE 1.0)
(setvar 'PSLTSCALE 1.0)
(setvar 'MEASUREINIT 1)
(setvar 'MEASUREMENT 1)
(setvar 'CMLSCALE 20.0)
(setvar 'LUNITS 2)
(SETVAR "DIMLFAC" 1)
(if (and (= (rem (length (car pts)) 3) 0)
(>= (length pts) 2)
)
(PROGN (setq obj (vl-catch-all-apply
'vla-addmline
(list
(vlax-get-property
(vla-get-activedocument (vlax-get-acad-object))
(if (= 1 (getvar 'CVPORT))
'Paperspace
'Modelspace
)
)
(vl-catch-all-apply
'vlax-make-variant
(list
(vl-catch-all-apply
'vlax-safearray-fill
(list
(vl-catch-all-apply
'vlax-make-safearray
(list
vlax-vbDouble
(cons 1 (* 3 (length pts)))
)
)
(apply 'append pts)
)
)
)
)
)
)
)
(vl-catch-all-apply
'vla-put-MLineScale
(list
obj
(cdr (assoc "比例" lst))
)
)
)
)
(SETQ ENT (VL-CATCH-ALL-APPLY 'VLAX-ENAME->VLA-OBJECT (LIST OBJ)))
(IF (VL-CATCH-ALL-ERROR-P ENT)
(SETQ ENT NIL)
)
ent
)
感谢杜总的分享! 感谢大佬分享 关于mline的帖子很少,给楼主点赞。
mline首先要进行设置,这才是关键。 自贡黄明儒 发表于 2024-4-17 07:12
关于mline的帖子很少,给楼主点赞。
mline首先要进行设置,这才是关键。
增加了变量设置,您给审核一下 本帖最后由 自贡黄明儒 于 2024-4-17 09:20 编辑
dcl1214 发表于 2024-4-17 08:46
增加了变量设置,您给审核一下
楼主客气了,也高看我了。当初我画型钢时,也想用mline来实现,当时看了一下样式设置,太复杂,也没有找到方法,就放弃了。 很好→很棒!很好~很棒!!很好……很棒!!! 杜总,这句话是不是错了啊(SETQ ENT (VL-CATCH-ALL-APPLY 'VLAX-ENAME->VLA-OBJECT (LIST OBJ)))我觉得应该是(SETQ ENT (VL-CATCH-ALL-APPLY 'vlax-vla-object->ename(LIST OBJ)))
谢谢共享源码正需要,如何把对正方式改为上,现在的对正是无.
变量是CMLJUST
页:
[1]