明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1291|回复: 3

[讨论] [已解决]如何根据一条line的扩展属性,自动在线段两侧各画一条平行虚线

[复制链接]
发表于 2020-11-18 15:35:09 | 显示全部楼层 |阅读模式
本帖最后由 sunqv 于 2020-12-1 21:16 编辑

根据line的扩展属性,自动在线段两侧各画一条平行虚线
扩展属性:
选择对象: ((-1 . <图元名: -860e18>) (0 . "LINE") (330 . <图元名: -261308>) (5 . "2B93FD")
(100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "YSLINE") (6 . "FK") (100 .
"AcDbLine") (10 523052.0 2.71252e+006 0.452) (11 523087.0 2.71254e+006 -0.016)
(210 0.0 0.0 1.0) (-3 ("表名" (1000 . "YS_LINE")) ("ID" (1071 . 444)) ("起点点号"
(1000 . "YS223000")) ("终点点号" (1000 . "YS223221")) ("起点埋深" (1000 . "4.000"))
("终点埋深" (1000 . "4.200")) ("起点高程" (1000 . "0.452")) ("终点高程" (1000 . "-0.016"))
("材质" (1000 . "砼")) ("埋设方式" (1000 . "直埋")) ("线型" (1000 . "非空管")) ("管径" (1000 .
"4000X3000")) ("探测时间" (1000 . "")) ("权属单位" (1000 . "漳州市供排水中心")) ("工程编号" (1000 .
"")) ("套管材料" (1000 . "")) ("套管管径" (1000 . "")) ("要素代码" (1000 . "")) ("总孔数"
(1000 . "")) ("已用孔数" (1000 . "")) ("条数" (1000 . "")) ("电压" (1000 . "")) ("压力"
(1000 . "")) ("勘测单位" (1000 . "")) ("使用状况" (1000 . "")) ("流向" (1000 . "0"))
("入库时间" (1000 . "")) ("更新时间" (1000 . "")) ("备注" (1000 . "")) ("专业注记内容" (1000 .
"雨水 40


其中:平行线距离当前线段的距离为扩展属性中的“管径”中(例如:“400X300"(宽X高))宽400的一半(即200)
图层取:(setq LAYER (STRCAT (SUBSTR (DXF EN 8) 1 2) "MARK"))
 楼主| 发表于 2020-11-26 16:15:20 来自手机 | 显示全部楼层
这个想要批量框选所有线段,然后实现绘制
发表于 2020-11-26 22:08:21 | 显示全部楼层
本帖最后由 yshf 于 2020-11-26 22:56 编辑

(defun c:hpxx()
    (vl-load-com)
    (setq osm (getvar "osmode"))
    (setvar "osmode" 0)
    (command "_undo" "be")
    (setq Linetype "ACAD_ISO02W100")
    (if (not (tblsearch "ltype" Linetype))
        (vla-load (vla-get-linetypes
                       (vla-get-activedocument (vlax-get-acad-object))
                  )
                  Linetype
                  "acadiso.lin"
       )
    )
    (if (setq ssa (ssget '((0 . "LINE"))))
        (progn
            (setq i 0)
            (repeat (sslength ssa)
               (setq ent (ssname ssa i))
               (setq dxf (entget ent '("*")))
               (setq Layer (strcat (substr (cdr (assoc 8 dxf)) 1 2) "MARK"))
               (if (setq kzsj (cdr (assoc -3 dxf)))
                   (if (wcmatch (setq gjzfc (cdadr (assoc "管径" kzsj))) "#*#X#*#")
                       (progn
                           (setq gjz (/ (atof (substr gjzfc 1 (vl-string-search "X" gjzfc))) 2000.0))
                           (setq obj (vlax-ename->vla-object ent))
                           (vla-offset obj gjz)
                           (setq obj1 (vlax-ename->vla-object (entlast)))
                           (vlax-put-property  "Linetype" Linetype)
                           (vlax-put-property obj1 "Layer" Layer)
                           (vla-offset obj (- gjz))
                           (setq obj2 (vlax-ename->vla-object (entlast)))
                           (vlax-put-property obj2 "Linetype" Linetype)
                           (vlax-put-property obj2 "Layer" Layer)
                       )
                   )
               )
               (setq i (1+ i))
            )
        )
    )
    (command "_undo" "e")
    (setvar "osmode" osm)
    (princ)
)
 楼主| 发表于 2020-12-1 21:15:16 | 显示全部楼层
谢谢,虽然我已经写好代码了   大神的 代码还可以参考学习的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-17 17:27 , Processed in 0.207273 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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