这样的框选 偏移如何实现
本帖最后由 yaokui25 于 2012-12-25 11:26 编辑最近迷上了lisp
但是了解甚少
很多基础的东西还不是很了解,试着自己变了一些代码
下面的代码该如何实现,请大家指点迷津
框选 A 图层的多段线,同时偏移3mm(数值可输入最好),框选的对象归到 B 层
还有一个就是偏移之后的多段线,放到一个指定的图层C
上面的想法已经超过了我能力范围
恳请大家帮忙
(DEFUN C:J_TT ( / )
(command "layer" "make" "B" "Color""251" "" "l" "Continuous" "" "P" "N" """")
(command "layer" "make" "C" "Color""1" "" "l" "Continuous" "" "P" "P" """")
(setq ss (ssget'((0 . "LWPOLYLINE")(8 . "A" ))))
(command "_offset" "3" SS "0,0,0" "Chprop" SS "" "layer" "B "_color" "_bylayer"
"")
)
c961806787 发表于 2012-12-25 15:02
(defun c:off()
(setq chklay (tblsearch "layer" "B"))
(if (null chklay)(command "-layer" "n ...
很好的解决我当前的问题,谢谢了 为什么那么多人看,没人回复啊
杨如迁 发表于 2012-12-21 08:53 static/image/common/back.gif
老杨,不许笑 大家过来看看,帮帮忙吧 大家过来看看,帮帮忙吧 本帖最后由 c961806787 于 2012-12-24 23:04 编辑
给你一个思路。先用offset偏移,然后修改两个多段线的属性。 c961806787 发表于 2012-12-24 23:04 static/image/common/back.gif
给你一个思路。先用offset偏移,然后修改两个多段线的属性。
嘿嘿~我也想这么弄,可是自己掌握的水平有限啊
等待高手相助 本帖最后由 c961806787 于 2012-12-25 15:04 编辑
(defun c:off()
(setq chklay (tblsearch "layer" "B"))
(if (null chklay)(command "-layer" "n" "B" "c" 4 "B" ""))
(setq chklay (tblsearch "layer" "C"))
(if (null chklay)(command "-layer" "n" "C" "c" 5 "C" ""))
(princ "\n选择多段线:")
(setq ss (ssget))
(initget "左 右")
(setq sd (getkword "\n选择偏移方向<左/右>"))
(setq dd (getreal "\n输入偏移距离<3mm>"))
(if (null dd) (setq dd 3))
(setq nn 0)
(repeat (sslength ss)
(setq en (ssname ss nn))
(setq en_data (entget en))
(setq entype (cdr (assoc 0 en_data)))
(if (= entype "LWPOLYLINE")
(chg_en)
)
(setq nn (1+ nn))
)
(prin1)
)
(defun chg_en()
(setq old_pt (cdr (assoc 10 en_data)))
(setq pt_x (car old_pt))
(setq pt_y (cadr old_pt))
(cond ((= sd "左") (setq new_pt (list (1- pt_x) pt_y)))
((= sd "右") (setq new_pt (list (1+ pt_x) pt_y)))
)
(command "offset" dd en new_pt "")
(setq en1 (entlast))
(setq en1_data (entget en1))
(setq layer_list (assoc 8 en_data))
(setq layer (cdr layer_list))
(setq layer1_list (assoc 8 en1_data))
(setq layer1 (cdr layer1_list))
(princ (strcat "\n原图层为[" layer "]"))
(setq new_layer_list (cons 8 "B"))
(setq new_layer1_list (cons 8 "C"))
(setq en_data (subst new_layer_list layer_list en_data))
(setq en1_data (subst new_layer1_list layer1_list en1_data))
(entmod en_data)
(entmod en1_data)
)
;查找一下,把“B”、“C”图层改成你需要的图层。快捷键off
c961806787 发表于 2012-12-25 15:02
(defun c:off()
(setq chklay (tblsearch "layer" "B"))
(if (null chklay)(command "-layer" "n ...
偏移方向还是通过点击在哪边就偏哪边好一点
页:
[1]
2