对代码稍作修改。
(defun c:qwremake (/ s en e plw)
(if (and (setq s (entsel "\nSelect any object: "))
(wcmatch (setq en (cdr (assoc 0 (setq e (entget (car s))))))
"LINE,*POLYLINE,CIRCLE,ARC,INSERT"
)
)
(progn
;; layer
(setvar 'CLAYER (cdr (assoc 8 e)))
;; linetype
(if (cdr (assoc 6 e))
(setvar 'CELTYPE (cdr (assoc 6 e)))
(setvar 'CELTYPE "ByLayer")
)
;; color
(if (cdr (assoc 62 e))
(setvar 'CECOLOR (itoa (cdr (assoc 62 e))))
(setvar 'CECOLOR "ByLayer")
)
;; polyline width
(if (cdr (assoc 43 e))
(progn
(setq plw (getvar 'PLINEWID))
(setvar 'PLINEWID (cdr (assoc 43 e)))
)
)
(cond ((wcmatch en "LINE,CIRCLE,ARC")
(command en)
)
((eq en "INSERT")
(command "_.copy"
s
""
(cadr s)
"\\"
)
)
((wcmatch en "*POLYLINE") (command "pline"))
)
(setvar 'PLINEWID plw)
)
)
(princ)
)
在继续之前,非常感谢您的技能和时间!
我真的很喜欢你处理积木的方式。我有一个使用insert的有效解决方案,但后来我不得不处理我不想处理的缩放和旋转,而你的解决方案在动态块和vis状态下工作得更好。
然而,关于PLINEWID,我无法使你的lisp正常工作。在设置plw后,它似乎不想将值设置为PLINEWID。。。不知道为什么,因为我尝试了不同的方法。
无论如何,我添加了椭圆支持,现在我将处理图案填充。
(defun c:qwremake (/ s en e plw)
(if (and (setq s (entsel "\nSelect any object: "))
(wcmatch (setq en (cdr (assoc 0 (setq e (entget (car s))))))
"LINE,CIRCLE,ARC,ELLIPSE,*POLYLINE,INSERT"
)
)
(progn
;; layer
(setvar 'CLAYER (cdr (assoc 8 e)))
;; linetype
(if (cdr (assoc 6 e))
(setvar 'CELTYPE (cdr (assoc 6 e)))
(setvar 'CELTYPE "ByLayer")
)
;; color
(if (cdr (assoc 62 e))
(setvar 'CECOLOR (itoa (cdr (assoc 62 e))))
(setvar 'CECOLOR "ByLayer")
)
;; polyline width
(if (cdr (assoc 43 e))
(setvar 'PLINEWID (cdr (assoc 43 e)))
)
(cond ((wcmatch en "LINE,CIRCLE,ARC,ELLIPSE")
(command en)
) ;end condition
((eq en "INSERT")
(command "_.copy"
s
""
(cadr s)
"\\"
)
) ;end condition
((wcmatch en "*POLYLINE")
(command "pline")
) ;end condition
)
)
)
(prompt "\nObject not compatible.")
(princ)
)
非常感谢。 iconeo。代码不错。还不使用文字、样条线和图案填充。。。
谢谢
嘿,谢谢。最初的海报创意和塔尔瓦特得到了巨大的帮助。
计划添加对文字、尺寸、图案填充和引线的支持。你认为我还应该解决其他问题吗?
((eq en "INSERT")
(command "_.copy"
s
""
(cadr s)
"\\"
)
) ;end condition
代替“复制”,重新编写并尝试插入函数。
对于我的用例来说,副本效果更好。然后我就不必去处理动态块、旋转、缩放等的视觉状态。
如果有人想走插入路线,李-麦克的助手lisp例程可以很好地用于动态块。
谢谢 更多的想法不断涌现,我们都知道有很多方法可以编写这个函数。。 我被领导者和维度困住了。如何访问用户箭头覆盖信息?我相信它是在扩展数据中,我不知道如何正确地阅读它,甚至不知道如何使用它。感谢您的帮助。
谢谢 为qleader试试这个,抱歉这是一个noob例程。
(defun leader_a ()
(progn
(setq dim_style (cdr (assoc 3 alist))
lyr (cdr (assoc 8 alist))
)
(command "-dimstyle" "r" dim_style
"-layer" "s" lyr ""
"qleader")
)
)
(defun c:QW ()
(setvar "cmdecho" 1)
(setq alist (entget (car (entsel)))
ent (cdr (assoc 0 alist))
)
(if (= ent "LEADER") (leader_a))
(princ)
)
有人能添加这样的内容吗?
(setq convert (cond ( (getkword "\nconvert to polylines? <N>: ") ) ( "No" )))
(if (eq "Yes" convert)
(command "_.pedit" "_M" 2bjoin"" "_J" "" ""))
)
)
(setvar 'peditaccept ped)
)
页:
1
[2]