兄弟们:请问如何得到剪切后的选择集?谢谢!
兄弟们:请问如何得到剪切后的选择集?谢谢!Ref:
http://bbs.mjtd.com/thread-57569-1-1.html
http://bbs.mjtd.com/thread-65778-1-1.html
http://bbs.mjtd.com/thread-171322-1-1.html
剪切前后选择集是不会变化的。 我也不太懂,我用clipbrd查看剪切板,是图片格式的,但如果只是图版,那么它粘贴到cad中又变回图元。因为高版本复制不到低版,而低版却可以复制到高版,所以一开始我以为它是以临时文件的形式来保存,然后clipboard里应该是文件路径,但事实上却不是。 非常感谢各位兄弟的帮忙,我想得到剪切后的对象集,现附图及代码?请兄弟们帮忙找出错在哪?非常感谢!
(defun c:tt(/ ss)
(command ".UNDO" "BE")
(setq BoundaryLine (entsel "\n选择修剪边界线 :"))
(if BoundaryLine (setq ss (LZXTrim BoundaryLine)))
(command ".UNDO" "E")
(sssetfirst ss ss)
(princ)
)
(defun LZXTrim (BoundaryLine / Vcmdecho Vosmode newObj obj lst n i ptl ss)
(setq Vcmdecho (getvar "cmdecho"))
(setq Vosmode (getvar "osmode"))
(setvar "cmdecho" 0)
(setvar "osmode" 0)
(vl-cmdf "zoom" "e")
(setq obj (entlast));标记对象
(vl-cmdf "offset" 1 BoundaryLine "-1000,-1000" "")
(setq newObj (entlast))
(setq lst (PLpt newObj))
(setq n (length lst))
(vl-cmdf "trim" BoundaryLine "" "F")
(setq i 0)
(repeat n
(vl-cmdf (nth i lst))
(setq i (+ i 1))
)
(vl-cmdf (nth 0 lst) "" "")
(setq ss (ssadd))
(while (setq obj (entnext obj)) (ssadd obj ss));标记对象后创建对象组成选择集
(entdel newObj)
(vl-cmdf "zoom" "p")
(if Vosmode (setvar "osmode" Vosmode))
(if Vcmdecho (setvar "cmdecho" Vcmdecho))
ss
)
(defun PLpt (ent / key)
(setq key 10)
(setq ent (if (= (type ent) 'LIST) (car ent) ent))
(setq ent (entget ent))
(apply 'append (mapcar '(lambda (x) (if (eq (car x) key) (list (cdr x)))) ent))
)
页:
[1]