明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2331|回复: 12

这样的框选 偏移如何实现

  [复制链接]
发表于 2012-12-20 22:47:15 | 显示全部楼层 |阅读模式
本帖最后由 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"
    "")
)
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2016-10-7 00:15:59 | 显示全部楼层
c961806787 发表于 2012-12-25 15:02
(defun c:off()
    (setq chklay (tblsearch "layer" "B"))
    (if (null chklay)(command "-layer" "n ...

很好的解决我当前的问题,谢谢了
 楼主| 发表于 2012-12-21 07:25:37 | 显示全部楼层
为什么那么多人看,没人回复啊
发表于 2012-12-21 08:53:50 | 显示全部楼层
 楼主| 发表于 2012-12-21 10:06:11 | 显示全部楼层
杨如迁 发表于 2012-12-21 08:53

老杨,不许笑
 楼主| 发表于 2012-12-21 11:51:44 | 显示全部楼层
大家过来看看,帮帮忙吧
 楼主| 发表于 2012-12-23 20:14:45 | 显示全部楼层
大家过来看看,帮帮忙吧
发表于 2012-12-24 23:04:35 | 显示全部楼层
本帖最后由 c961806787 于 2012-12-24 23:04 编辑

给你一个思路。先用offset偏移,然后修改两个多段线的属性。
 楼主| 发表于 2012-12-25 11:27:43 | 显示全部楼层
c961806787 发表于 2012-12-24 23:04
给你一个思路。先用offset偏移,然后修改两个多段线的属性。

嘿嘿~我也想这么弄,可是自己掌握的水平有限啊
等待高手相助
发表于 2012-12-25 15:02:40 | 显示全部楼层
本帖最后由 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

评分

参与人数 1金钱 +10 收起 理由
yaokui25 + 10 真的好用了,谢谢您 高手!赞一个

查看全部评分

发表于 2012-12-25 23:30:55 来自手机 | 显示全部楼层
c961806787 发表于 2012-12-25 15:02
(defun c:off()
    (setq chklay (tblsearch "layer" "B"))
    (if (null chklay)(command "-layer" "n ...

偏移方向还是通过点击在哪边就偏哪边好一点
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 09:49 , Processed in 0.289411 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表