将直线转换为多段线
有没有办法通过选择直线将其转换为多段线? 在命令行键入“pedit”,然后选择该行。当它只有一行时,它会问“你想把它转成一行吗”说“是的”&而不是使用连接选项添加其他行(如果需要)。
如果您将“peditacept”值设置为“1”,则iwl将抑制该提示,而无需询问即可将其转换为一(多段线)。 简单介绍一下:
(defun c:pj (/ ss1)
(setq varlist (list "cmdecho" "peditaccept")
oldvars (mapcar 'getvar varlist)
) ;_end setq
(mapcar 'setvar varlist (list 0 1))
(setq ss1 (ssget))
(if (> (sslength ss1) 1)
(progn
(vl-cmdf "_pedit" "_M" ss1 "" "J" "0" "")
(princ (strcat "\n" (itoa (sslength ss1)) " Lines Converted. "))
) ;_end progn
(progn
(vl-cmdf "_pedit" ss1 "")
(princ (strcat "\n" (itoa (sslength ss1)) " Line Converted. "))
) ;_end progn
) ;_end if
(mapcar 'setvar varlist oldvars)
(princ)
) ;_end defun
对于这样一个直截了当的任务,这需要很多代码。难道不能用单行宏来完成吗?只是好奇。 我解释了如果用户也只选择一个实体,那么需要两个语句而不是一个。。。此外,我必须在开始和结束时设置变量值。
次要更新:
(defun c:pj (/ varlist oldvars ss1)
(setq varlist (list "cmdecho" "peditaccept")
oldvars (mapcar 'getvar varlist)
) ;_end setq
(mapcar 'setvar varlist (list 0 1))
(setq ss1 (ssget '((0 . "LINE"))))
(if (> (sslength ss1) 1)
(progn
(vl-cmdf "_pedit" "_M" ss1 "" "J" "0" "")
(princ (strcat "\n" (itoa (sslength ss1)) " Lines Converted. "))
) ;_end progn
(progn
(vl-cmdf "_pedit" ss1 "")
(princ (strcat "\n" (itoa (sslength ss1)) " Line Converted. "))
) ;_end progn
) ;_end if
(mapcar 'setvar varlist oldvars)
(princ)
) ;_end defun
忘记了本地化一些变量,并添加了一个过滤器列表。
几乎……:-)
(if (zerop (getvar "PEDITACCEPT"))
(command "._PEDIT" "_M" (ssget) "" "_Y" "")
(command "._PEDIT" "_M" (ssget) "" "")
)
哈哈,不错的一个麦克斯温,但不允许单一耳鼻喉科。。。 还有mpedit 那是快车吗?
是的,李,这是一个快速工具…:-)
页:
[1]
2