找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

楼主: lizhgang.jin

[已解决] 求助论坛高手帮忙编制一个批量标注CAD断面图超欠挖插件

[复制链接]
 楼主| 发表于 2015-1-6 17:35:48 | 显示全部楼层
非常感谢您!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

 楼主| 发表于 2015-1-6 19:41:18 | 显示全部楼层
zxq0220 发表于 2015-1-6 10:48
怎样标?给个图样或图片。

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

使用道具 举报

已领礼包: 191个

财富等级: 日进斗金

发表于 2015-1-7 00:42:14 | 显示全部楼层
  1. (defun c:cqw (/ spl_real spl_design sty pt_n pt pt_near dim_mk)
  2.   (setq spl_real (car (entsel "选择实际开挖线 red")))
  3.   (setq spl_design (car (entsel "选择设计开挖线 white")))
  4.   (setq sty nil)
  5.   (setq pt_n (XD::Polyline:GetVertices spl_real))
  6.   (foreach pt pt_n
  7.     (progn

  8.       (setq pt_near (vlax-curve-getClosestPointTo spl_design pt))
  9.                                         ;求距离点最近的曲线上的点
  10.       (if (xdrx_point_isinside pt spl_design)
  11.         (setq sty "隧道欠挖-")
  12.         (setq sty "隧道超挖+")
  13.       )
  14.       (setq dim_mk nil)
  15.                                         ;直接生成有问题
  16.                                         ;(setq dim_mk (xdrx_dimension_MakeAlign pt pt_near  pt_near sty))
  17.                                         ;(xdrx_dimension_update dim_mk)
  18.       (setq dim_mk (xdrx_dimension_MakeAlign pt pt_near pt_near))
  19.       (xdrx_dimension_SetStyle dim_mk sty)
  20.     )
  21.   )
  22. )


评分

参与人数 1D豆 +10 收起 理由
XDSoft + 10 热心帮忙奖!

查看全部评分

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

使用道具 举报

已领礼包: 191个

财富等级: 日进斗金

发表于 2015-1-7 01:37:06 | 显示全部楼层
修改了下  欠挖的文字都挪到外面去了。
  1. (defun c:cqw (/ spl_real spl_design sty pt_n pt pt_near dim_mk)
  2.   (setq spl_real (car (entsel "选择实际开挖线 red")))
  3.   (setq spl_design (car (entsel "选择设计开挖线 white")))
  4.   (setq pt_n (XD::Polyline:GetVertices spl_real))
  5.   (foreach pt pt_n
  6.     (progn
  7.       (setq sty nil)
  8.       (setq pt_near (vlax-curve-getClosestPointTo spl_design pt))
  9.       (if (xdrx_point_isinside pt spl_design)
  10.         (setq sty "隧道欠挖-")
  11.         (setq sty "隧道超挖+")
  12.       )
  13.       (setq dim_mk (xdrx_dimension_MakeAlign pt pt_near pt_near))
  14.       (xdrx_dimension_SetStyle dim_mk sty)
  15.       (if (= sty "隧道欠挖-")
  16.         (progn
  17.           (xdrx_dimension_SetTextPosition
  18.             dim_mk
  19.             (mapcar '+ pt_near (mapcar '- pt_near pt))
  20.           )
  21.         )
  22.       )
  23.     )
  24.   )
  25. )



点评

昨天那位大师的程序最符合心意,给他提了两个建议,一是文字放到外面,二是可选隔几点后,选开挖线,选设计线实现自动标注。希望高人们看看他的程序。帮改改。  详情 回复 发表于 2015-1-7 09:02
命令: cqw 选择实际开挖线 red选择设计开挖线 white; 错误: no function definition: XD:OLYLINE:GETVERTICES 大师我把代码复制后改LSP加载运行出线错误,能否不要搞实际开挖线红色,设计开挖线白色。不要颜色  详情 回复 发表于 2015-1-7 08:59
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2015-1-7 08:25:15 | 显示全部楼层
本帖最后由 st788796 于 2015-1-7 08:26 编辑
口味虾 发表于 2015-1-7 01:37
修改了下  欠挖的文字都挪到外面去了。

写的不错,提个建议,判断点在曲线内部无非两个方法,一种是用采样点,构造一个多边形,CAD还提供了一个更精确的方法就是使用 AcBr 类的一个函数,不管用哪种方法,在大量点需要判断在曲线内部计算量都很大,虽然在 ARX  内部但都会有重复动作,第一种判断一次就要取样一次,第二种判断一次就要建立一个 AcBr 用完再释放,虽然你感觉不到,但实际上 API 内部就是这样处理的,其实从效率而言还可以用下面的方法

把 曲线变成方向确定的线,利用点的 FirstDeriv 去判断点的内外

  1. (defun c:cqw (/ filter ss e1 e2 pActuals pDesigns pVertors pDists)
  2.   (setq        filter '((0 . "LWPOLYLINE")
  3.                  (-4 . "&=")
  4.                  (70 . 0)
  5.                 )
  6.   )
  7.   (if (and (setq e1 (car (xdrx_entsel
  8.                            "\n选择实际开挖线: "
  9.                            (cons '(8 . "实际开挖线") filter)
  10.                          )
  11.                     )
  12.            )
  13.            (setq e2 (car (xdrx_entsel
  14.                            "\n选择设计开挖线: "
  15.                            (cons '(8 . "设计开挖线") filter)
  16.                          )
  17.                     )
  18.            )
  19.            (progn
  20.              (if (not (xdrx_curve_direction e2)) ;_判断逆时针
  21.                (xdrx_curve_reverse e2)
  22.              )
  23.              t
  24.            )
  25.       )
  26.     (progn
  27.       (setq pActuals (xdrx_getpropertyvalue e1 "Vertices") ;_实际开挖点
  28.             pDesigns (mapcar '(lambda (x)
  29.                                 (xdrx_curve_getclosestpoint e2 x)
  30.                               )
  31.                              pActuals
  32.                      ) ;_对应设计点
  33.             pVectors (mapcar
  34.                        '(lambda        (x)
  35.                           (mapcar '+
  36.                                   x
  37.                                   (xdrx_curve_getfirstderiv e2 x)
  38.                           )
  39.                         )
  40.                        pDesigns
  41.                      ) ;_设计线对应点处切线方向
  42.             pDists   (mapcar '(lambda (x y z)
  43.                                 (xdrx_point_dist2line x y z)
  44.                               )
  45.                              pActuals
  46.                              pDesigns
  47.                              pVectors
  48.                      ) ;_距离正负表示在设计线内外
  49.       )
  50.       ;;mapcar 处理
  51.     )
  52.   )
  53. )

点评

命令: cqw ; 错误: no function definition: XDRX_ENTSEL 大师你编的代码我复制到记事本改为LSP,运行不了显示上面的结果。  详情 回复 发表于 2015-1-7 08:55
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

 楼主| 发表于 2015-1-7 08:55:44 | 显示全部楼层
st788796 发表于 2015-1-7 08:25
写的不错,提个建议,判断点在曲线内部无非两个方法,一种是用采样点,构造一个多边形,CAD还提供了一个 ...

命令: cqw ; 错误: no function definition: XDRX_ENTSEL
大师你编的代码我复制到记事本改为LSP,运行不了显示上面的结果。

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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2015-1-7 08:57:40 | 显示全部楼层
lizhgang.jin 发表于 2015-1-7 08:55
命令: cqw ; 错误: no function definition: XDRX_ENTSEL
大师你编的代码我复制到记事本改为LSP,运行不 ...

上面程序没有写标注部分,不是完整应用,另外需要加载 XDRXAPI

点评

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

使用道具 举报

 楼主| 发表于 2015-1-7 08:59:30 | 显示全部楼层
口味虾 发表于 2015-1-7 01:37
修改了下  欠挖的文字都挪到外面去了。

命令: cqw 选择实际开挖线 red选择设计开挖线 white; 错误: no function definition:
XD::POLYLINE:GETVERTICES
大师我把代码复制后改LSP加载运行出线错误,能否不要搞实际开挖线红色,设计开挖线白色。不要颜色,颜色可自己定。

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

使用道具 举报

 楼主| 发表于 2015-1-7 09:02:42 | 显示全部楼层
口味虾 发表于 2015-1-7 01:37
修改了下  欠挖的文字都挪到外面去了。

昨天那位大师的程序最符合心意,给他提了两个建议,一是文字放到外面,二是可选隔几点后,选开挖线,选设计线实现自动标注。希望高人们看看他的程序。帮改改。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

 楼主| 发表于 2015-1-7 09:06:02 | 显示全部楼层
dwp@hamco 发表于 2015-1-6 17:31
嗯,刚才你说的这两点,改起来不算难。

大师今天没看到你的大作,试了一下另外两位老师的程序,运行不了,还是您的最符合心意,期盼您的改进版。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

 楼主| 发表于 2015-1-7 09:08:37 | 显示全部楼层
st788796 发表于 2015-1-7 08:57
上面程序没有写标注部分,不是完整应用,另外需要加载 XDRXAPI

能否提供个完整的我再试试呢。

点评

本人菜鸟都不是,希望各位大师本着人道,多多指点。  详情 回复 发表于 2015-1-7 09:09
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

 楼主| 发表于 2015-1-7 09:09:23 | 显示全部楼层
lizhgang.jin 发表于 2015-1-7 09:08
能否提供个完整的我再试试呢。

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

使用道具 举报

 楼主| 发表于 2015-1-7 09:25:11 | 显示全部楼层
黑猫白猫只要能抓老鼠就是好猫,我也不懂哪种编程语言最好,我只知道编的程序要易用,能用,就是好程序。个人见解。求答案。我就会加载CAD的VLX/LSP/ARX/等程序,别的不知到怎么用,还得向各位大师学习。谢谢。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

发表于 2015-1-7 09:27:56 | 显示全部楼层
我用的方法可能比较原始,算法不够好,速度不快。看楼主确实有点着急,需要帮助,今天花了点时间按他的意见修改了一下。程序写得不好的地方,望各位大大多多指点!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

 楼主| 发表于 2015-1-7 10:04:21 | 显示全部楼层

老师您的程序试用了,很好很方便。如果你有空的话还可以有个小改动,就是我标完一个图后,下一个图标的时候,选间隔几点不用重输入。程序已经很满意了,谢谢老师。

用老师程序效果图

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-24 02:16 , Processed in 0.467271 second(s), 56 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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