找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1033|回复: 15

[求助] 求将多段线转化成交通标线的程序!

[复制链接]

已领礼包: 127个

财富等级: 日进斗金

发表于 2016-12-6 19:43:35 | 显示全部楼层 |阅读模式
悬赏20D豆已解决
由于一些特殊要求,需要写一个转化的程序,程序要求如下图或见dwg, QQ截图20161206194050.jpg

交通实现标线转虚线.rar

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

最佳答案

查看完整内容

要批量就这样 (defun c:tt () (if (and (setq swid (getreal "\n落笔段长度:")) (setq ewid (getreal "\n抬笔段长度:")) (setq wid (getreal "\n输入线宽:")) ) (while (and (xdrx_initssget "\n选择曲线:") (setq ss (xdrx_ssget '((0 . "LINE,*POLYLINE,ARC")) ) ) ) (mapcar '(lambda (e) (setq len1 (xdrx_getpropertyvalue e "length") len 0.0 pts nil ) ( ...
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 40个

财富等级: 招财进宝

发表于 2016-12-6 19:43:36 | 显示全部楼层

要批量就这样

(defun c:tt ()
  (if (and
        (setq swid (getreal "\n落笔段长度<退出>:"))
        (setq ewid (getreal "\n抬笔段长度<退出>:"))
        (setq wid (getreal "\n输入线宽<退出>:"))
      )
    (while (and        (xdrx_initssget "\n选择曲线<退出>:")
                (setq ss (xdrx_ssget
                           '((0 . "LINE,*POLYLINE,ARC"))
                         )
                )
           )
      (mapcar
        '(lambda (e)
           (setq len1 (xdrx_getpropertyvalue e "length")
                 len  0.0
                 pts  nil
           )
           (while
             (setq p1 (xdrx_curve_getpointatdist e (+ len swid)))
              (setq pts (cons p1 pts))
              (setq len (+ len swid ewid))
              (if (setq p2 (xdrx_curve_getpointatdist e len))
                (setq pts (cons p2 pts))
              )
           )
           (setq pts (reverse pts))
           (setq ss (apply
                      'xdrx_curve_getsplitcurves
                      (cons e pts)
                    )
           )
           (setq i 0)
           (setq ents (xdrx_pickset->ents ss))
           (xdrx_entity_delete
             (XD::List:odd (xd::list:removetail ents))
           )
           (mapcar
             '(lambda (x)
                (setq g         (xdge::constructor x)
                      g1 (xdge::constructor "kcompositecrv3d")
                )
                (xdge::setpropertyvalue g1 "setcurvelist" g)
                (xdge::entity:make g1)
                (xdrx_entity_setpropertiesfrom (entlast) x)
                (xdrx_setpropertyvalue (entlast) "constantwidth" wid)
                (xdrx_entity_delete x)
                (xdge::free g g1)
              )
             ents
           )
         )
        (xdrx_pickset->ents ss)
      )
    )
  )
  (princ)
)

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

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

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

使用道具 举报

已领礼包: 112个

财富等级: 日进斗金

发表于 2016-12-6 21:45:29 | 显示全部楼层
2016-12-06_213746.png
你应该想要的代码是Lisp的吧?我用的是arx,arx的需要编译才能使用,目前只是初步实现,有需要请留言
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 127个

财富等级: 日进斗金

 楼主| 发表于 2016-12-6 21:53:48 | 显示全部楼层

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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2016-12-6 23:29:49 | 显示全部楼层

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

使用道具 举报

已领礼包: 127个

财富等级: 日进斗金

 楼主| 发表于 2016-12-7 08:40:26 | 显示全部楼层

恩  不过好像用多段线或者把多段线做成块 做列阵好像就可以了!  

列阵要选基点啥的 有时基点指定不对  还不能框选

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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2016-12-9 22:58:24 | 显示全部楼层
试试
落笔抬笔打断曲线.gif
(defun c:tt ()
  (if (and
        (setq swid (getreal "\n落笔段长度<退出>:"))
        (setq ewid (getreal "\n抬笔段长度<退出>:"))
        (setq wid (getreal "\n输入线宽<退出>:"))
        (setq e (car (xdrx_entsel "\n点取曲线<退出>" '((0 . "LINE,*POLYLINE,ARC")))))
      )
    (progn
      (setq len1 (xdrx_getpropertyvalue e "length")
            len 0.0
            pts nil
      )
      (while (setq p1 (xdrx_curve_getpointatdist e (+ len swid)))
        (setq pts (cons p1 pts))
        (setq len (+ len swid ewid))
        (if (setq p2 (xdrx_curve_getpointatdist e len))
          (setq pts (cons p2 pts))
        )
      )
      (setq pts (reverse pts))
      (setq ss (apply
                 'xdrx_curve_getsplitcurves
                 (cons e pts)
               )
      )
      (setq i 0)
      (setq ents (xdrx_pickset->ents ss))
      (xdrx_entity_delete (XD::List:odd (xd::list:removetail ents)))
      (mapcar
        '(lambda (x)
           (setq g (xdge::constructor x)
                 g1 (xdge::constructor "kcompositecrv3d")
           )
           (xdge::setpropertyvalue g1 "setcurvelist" g)
           (xdge::entity:make g1)
           (xdrx_entity_setpropertiesfrom (entlast) x)
           (xdrx_setpropertyvalue (entlast) "constantwidth" wid)
           (xdrx_entity_delete x)
           (xdge::free g g1)
         )
        ents
      )
    )
  )
  (princ)
)

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

使用道具 举报

已领礼包: 127个

财富等级: 日进斗金

 楼主| 发表于 2016-12-10 22:03:19 | 显示全部楼层

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

使用道具 举报

已领礼包: 127个

财富等级: 日进斗金

 楼主| 发表于 2017-8-7 15:49:44 | 显示全部楼层

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

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2017-8-7 16:02:44 | 显示全部楼层

刚用了下,能用,下载最新的API和晓东工具箱。

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

使用道具 举报

已领礼包: 127个

财富等级: 日进斗金

 楼主| 发表于 2017-8-8 19:33:46 | 显示全部楼层

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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2017-8-8 20:10:10 | 显示全部楼层

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

使用道具 举报

已领礼包: 127个

财富等级: 日进斗金

 楼主| 发表于 2017-8-8 20:17:03 | 显示全部楼层
本帖最后由 spp_wall 于 2017-8-8 20:27 编辑

家里的是旧的 好像没装晓东工具箱  


http://bbs.xdcad.net/forum.php?m ... hlight=%C2%D6%C0%AA

这个可以 找到了!

事例.rar

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

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

使用道具 举报

已领礼包: 127个

财富等级: 日进斗金

 楼主| 发表于 2017-8-8 20:34:36 | 显示全部楼层

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-25 21:41 , Processed in 0.457692 second(s), 60 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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