明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2367|回复: 18

[提问] 管线扯旗

[复制链接]
发表于 2020-12-1 21:25:15 | 显示全部楼层 |阅读模式
求助,如何把线的属性扯旗写出到图上   
效果见gif     

扯旗的方向,管线排列自北向南

程序扯旗有问题,想把代码给提取出来    求大神帮忙,写代码实现这个功能也可

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2020-12-3 12:46:39 | 显示全部楼层
sunqv 发表于 2020-12-3 04:11
如何求所画线段相交的线段的选项集?


;多线段栏选
(defun c:ssgetf ( / en i ps ss)
        (princ "\n点击栏选的多线段")
        (if        (setq en(ssget ":E:S"(list(cons 0 "*OLYLINE"))))
                (progn
                        (setq en(ssname en 0) i -1)
                        (while
                                (setq v (vlax-curve-getpointatparam en (setq i (1+ i))))
                                (setq ps (append ps (list v)))
                        )
                        (setq ss(ssget "f" ps));自己加过滤条件
                )
        )
)

另外,你是尼泊尔的?
发表于 2020-12-7 20:34:42 | 显示全部楼层
sunqv 发表于 2020-12-7 17:44
  • (setq p1(getpoint "栏选第一点") p2(getpoint p1 "栏选第二点"))
  • (entmakex (list '(0 . "LINE") ...

  • 提示
    (setq DATA1 (ENTGET EN); 不包含扩展数据的图形数据表
           
    (setq DATA (ENTGET EN '("*"))) ;全部的图形数据表(包含DATA1+扩展数据等等)
    取出扩展数据 (setq XDATA (CDR (ASSOC -3 DATA)))
    取出图层(setq LAYER (cdr(assoc 8 DATA)))

    另外1
    (setq QDZB (DXF EN 10))==(setq ZDZB (DXF EN 10))
    即QDZB=ZDZB, 逻辑不通

    另外2
    函数DXF 没必要定义
    (DXF EN 10)====(cdr(assoc 10 DATA))

    你有些基本概念还不清楚
    例如先把
    (ENTGET EN)与(ENTGET EN '("*"))返回值区别
    (assoc element alist)用法弄清楚
    发表于 2020-12-2 10:36:57 | 显示全部楼层
    本帖最后由 wzg356 于 2020-12-2 10:38 编辑

    简单来说,只要会取出属性,会text写文字,就可以实现
    但要实用化,就不是那么简单,基础的东西很多
    1,选择方式,ssget ,entsel基本功
    2、 取出属性,基本的entget,涉及扩展属性的,我给过你例子
    3、text文字在图上的位置,调整,涉及表格写法就很复制,可以找现成的小修改训练
        text文本是字符串,属性有各种各样,又涉及属性判断,转换成合乎规格的字符串
    4、你上面的有动态功能,更复杂
    5、进一步实用化涉及图层、颜色、字体等等代码量就很多了
    这种东西,先尽量用现成的吧,

    掌握一点点lsp碎片化知识后,
    先实现写一些简单小工具,对他人源码程序小修改等等,实现功能即可,
    过程中不断收集典型例句,自定义函数(可以不理解,知道功能、使用条件即可)


    发表于 2020-12-2 08:51:14 | 显示全部楼层
    这个是专业软件画的,不在那个环境下肯定看不到这些属性。
     楼主| 发表于 2020-12-3 04:11:50 来自手机 | 显示全部楼层
    如何求所画线段相交的线段的选项集?
     楼主| 发表于 2020-12-4 12:36:34 | 显示全部楼层
    wzg356 发表于 2020-12-3 12:46
    ;多线段栏选
    (defun c:ssgetf ( / en i ps ss)
            (princ "\n点击栏选的多线段")

    我的意思是,手动在dwg中点击两个点,利用两个点的坐标画一条线段,然后求出于这条线段相交的所有的线段的选择集
    发表于 2020-12-4 19:16:56 | 显示全部楼层
    本帖最后由 wzg356 于 2020-12-5 11:39 编辑

    还是先熟悉函数吧
    (setq p1(getpoint "栏选第一点") p2(getpoint p1 "栏选第二点"))
    (entmakex (list '(0 . "LINE") (cons 10 p1) (cons 11 p2)) )
    (setq ss(ssget "f" (list p1 p2) '((0 . "*POLYLINE")))

    或直接
    (setq ss(ssget "f"
            (list(setq p1(getpoint "栏选第一点")) (getpoint p1 "栏选第二点"))
            '((0 . "*POLYLINE")));要选什么自己改
    );这个不画线直接选


    发表于 2020-12-4 22:02:22 | 显示全部楼层
    本帖最后由 lee50310 于 2020-12-6 09:06 编辑

    畫線取物體相交點

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?注册

    x
     楼主| 发表于 2020-12-4 23:28:52 来自手机 | 显示全部楼层
    我是想取两点所画直线相交的线段作为选择集
    发表于 2020-12-5 11:41:41 | 显示全部楼层
    sunqv 发表于 2020-12-4 23:28
    我是想取两点所画直线相交的线段作为选择集

    5/7 楼都可以啊,自己改选择过滤条件都不会?

    7楼已改好

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

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

    GMT+8, 2024-11-15 06:44 , Processed in 0.183876 second(s), 27 queries , Gzip On.

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

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