找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 651|回复: 11

[编程申请] 请教大神多段线能否特性匹配呢

[复制链接]
发表于 2017-3-19 19:10:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
请教大神多段线能否特性匹配呢?即将图片中的2和3多段线都刷成和1 一样的多段线,两头都是线宽300缩为100的三角形符号,谢谢,这个做钢结构的时候非常管用。
111.png

111.zip

12.29 KB, 下载次数: 3, 下载积分: D豆 -1 , 活跃度 1

CAD

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 40个

财富等级: 招财进宝

发表于 2017-3-19 19:24:30 | 显示全部楼层
2,3图片的宽度不一样, 那么你1里面两端的加宽的宽度的规则是什么呢?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-3-19 20:25:56 | 显示全部楼层
加宽规则是多段线,起点线宽300终点线宽100画300长,然后线宽100,长度不限,最后又是起点线宽100,终点线宽300长度300结尾。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-3-19 20:27:42 | 显示全部楼层
希望能实现多段线之间像特性匹配一样互相刷,能变成类似1多段线一样的
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2017-3-19 20:59:47 | 显示全部楼层
那还刷干什么啊, 直接选择的多段线两头加上渐宽段不就行了?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-3-19 21:26:09 | 显示全部楼层
希望是批量的,将很多相同线宽的多段线,一起变成两端含有三角形符号的多段线,如果一个一个加上去很麻烦
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 20个

财富等级: 恭喜发财

发表于 2017-3-20 09:10:34 | 显示全部楼层
不管多宽,中间最后都是变成100宽的吗?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2017-3-20 14:34:38 来自手机 | 显示全部楼层
marting 发表于 2017-3-20 09:10

虽然是特定应用,但是指定或者默认有个选择更灵活些
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-3-20 20:00:41 | 显示全部楼层

是的,两边都变成三角形符号
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2017-3-20 20:38:53 | 显示全部楼层

  1. (defun c:tt (/ e w ss)
  2.   (initget "I")
  3.   (if (and (setq e (xdrx_entsel "\n选择样本[输入宽度(I)]: " '((0 . "lwpolyline") (-4 . ">=") (90 . 4))))
  4.            (if (= (type e) 'STR)
  5.              (setq w (getdist "\n输入宽度: "))
  6.              (setq e (car e)
  7.                    w (car (xdrx_getpropertyvalue e "widthsat" 1))
  8.              )
  9.            )
  10.            (not (zerop w))
  11.            (setq ss (ssget '((-4 . ">=") (43 . 0.0))))
  12.       )
  13.     (mapcar '(lambda (x / n)
  14.                (if (>= (xdrx_getpropertyvalue x "Length") (* 6 w))
  15.                  (progn
  16.                    (setq n (xdrx_getpropertyvalue x "NumVerts"))
  17.                    (xdrx_setpropertyvalue x "ConstantWidth" w)
  18.                    (if (< (xdrx_curve_getparamatdist x (* 3 w)) 1.0)
  19.                      (progn
  20.                        (xdrx_polyline_addvertexat x 1 (xdrx_curve_getpointatdist x (* 3 w)))
  21.                        (xdrx_polyline_setwidthsat x 0 (* 3 w) w)
  22.                      )
  23.                    )
  24.                    (if (< (1- n) (xdrx_curve_getparamatdist x (- (xdrx_getpropertyvalue x "Length") (* 3 w))) n)
  25.                      (xdrx_polyline_addvertexat
  26.                        x
  27.                        n
  28.                        (xdrx_curve_getpointatdist x (- (xdrx_getpropertyvalue x "Length") (* 3 w)))
  29.                        0.0
  30.                        w
  31.                        (* 3 w)
  32.                      )
  33.                    )
  34.                  )
  35.                )
  36.              )
  37.             (xdrx_pickset->ents ss)
  38.     )
  39.   )
  40.   (princ)
  41. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2017-3-20 21:12:00 | 显示全部楼层
本帖最后由 newer 于 2017-3-20 21:13 编辑

来一个各个部分都允许设置长度宽度的版本,也适合任意段数,包括弧线的多段线。

钢结构两端加端头.gif


  1. (defun c:tt ()
  2. (defun c:tt ()  (defun _callback (key)
  3.     (cond
  4.       ((= key "D")
  5.        (if (setq val
  6.                   (getreal
  7.                     (xdrx_prompt "\n端口起始宽度<" #poly-gjg-swidth ">:" t)
  8.                   )
  9.            )
  10.          (setq #poly-gjg-swidth val)
  11.        )
  12.       )
  13.       ((= key "S")
  14.        (if (setq val
  15.                   (getreal
  16.                     (xdrx_prompt "\n端口长度<" #poly-gjg-length ">:" t)
  17.                   )
  18.            )
  19.          (setq #poly-gjg-length val)
  20.        )
  21.       )
  22.       ((= key "V")
  23.        (if (setq val
  24.                   (getreal
  25.                     (xdrx_prompt "\n中间段宽度<" #poly-gjg-width ">:" t)
  26.                   )
  27.            )
  28.          (setq #poly-gjg-width val)
  29.        )
  30.       )
  31.     )
  32.     (_prompt)
  33.   )
  34.   (defun _prompt ()
  35.     (xdrx_prompt
  36.       "\n当前设置:端口宽度(" #poly-gjg-swidth
  37.       ") / 端口长度("         #poly-gjg-length
  38.       ") / 中间宽度("         #poly-gjg-width
  39.       ")"
  40.      )
  41.   )
  42.   (if (not #poly-gjg-swidth)
  43.     (setq #poly-gjg-swidth 300)
  44.   )
  45.   (if (not #poly-gjg-width)
  46.     (setq #poly-gjg-width 100)
  47.   )
  48.   (if (not #poly-gjg-length)
  49.     (setq #poly-gjg-length 300)
  50.   )
  51.   (_prompt)
  52.   (xdrx_begin)
  53.   (xdrx_initssget
  54.     "\n选择修改的多段线[端口宽度(S)/端口长度(D)/中间宽度(V)/<退出>:"
  55.     "S D V"
  56.     ""
  57.     "_callback"
  58.   )
  59.   (xdrx_initget "S D V")
  60.   (if (setq ss (xdrx_ssget '((0 . "*POLYLINE"))))
  61.     (progn
  62.       (mapcar
  63.         '(lambda (x)
  64.            (setq ge       (xdge::constructor x)
  65.                  ges      (xdge::getpropertyvalue ge "getcurvelist")
  66.                  #length1 (xdge::getpropertyvalue (car ges) "length")
  67.                  #length2 (xdge::getpropertyvalue (last ges) "length")
  68.            )
  69.            (xdrx_getpropertyvalue x "length")
  70.            (if (and (> #length1 (* 2 #poly-gjg-length))
  71.                     (> #length2 (* 2 #poly-gjg-length))
  72.                )
  73.              (progn
  74.                (xdge::free ges ge)
  75.                (if (xdrx_object_isa x "AcDb2dPolyline")
  76.                  (xdrx_polyline_convertfrom x)
  77.                )
  78.                (setq spt   (xdrx_curve_getpointatdist x #poly-gjg-length)
  79.                      ept   (xdrx_curve_getpointatdist
  80.                              x
  81.                              (- #length #poly-gjg-length)
  82.                            )
  83.                      verts (xdrx_polyline_numverts x)

  84.                )
  85.                (xdrx_polyline_addvertexat x 1 spt)
  86.                (xdrx_polyline_addvertexat x verts ept)
  87.                (xdrx_setpropertyvalue x "constantwidth" #poly-gjg-width)
  88.                (xdrx_setpropertyvalue
  89.                  x
  90.                  "WidthsAt"
  91.                  (list 0 #poly-gjg-swidth #poly-gjg-width)
  92.                )
  93.                (xdrx_setpropertyvalue
  94.                  x
  95.                  "WidthsAt"
  96.                  (list verts #poly-gjg-width #poly-gjg-swidth)
  97.                )
  98.              )
  99.              (progn
  100.                (xdrx_prompt "\n多段线的起始段和结束段的长度小于设置,重试.")
  101.              )
  102.            )
  103.          )
  104.         (xdrx_pickset->ents ss)
  105.       )

  106.     )
  107.   )
  108.   (xdrx_end)
  109.   (princ)
  110. )


论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-3-21 20:12:12 | 显示全部楼层
谢谢,厉害了我的哥!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-9-20 23:08 , Processed in 0.200545 second(s), 55 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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