找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

楼主: 金鹅起飞

[已解决] [已解决]各位大师:小弟求一个程序:在画出图形的同时,自动生成图形的尺寸并统计

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

使用道具 举报

 楼主| 发表于 2013-10-17 17:30:05 | 显示全部楼层
期待高手们的出现.............

点评

用 XD::Curve:ToPopoly 找出所有的 Region,删除最大的三个,剩下就是你要的那些  详情 回复 发表于 2013-10-19 08:10
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-10-19 08:10:46 | 显示全部楼层
金鹅起飞 发表于 2013-10-17 17:30
期待高手们的出现.............

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

使用道具 举报

 楼主| 发表于 2013-10-19 08:17:41 | 显示全部楼层
st788796:您好!可以请您帮忙编写一个LSP文件吗?cad原图在14楼。谢谢您了!

点评

我的机子上 Xdrx_curve_intersectbreak 运行不稳定,没法调试,基本的都写出来了, 思路就是做 Line 的一个副本,对这个副本进行交点断开,在断开的选择集中生成面域,去掉最大  详情 回复 发表于 2013-10-19 09:11
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-10-19 09:11:36 | 显示全部楼层
本帖最后由 newer 于 2013-10-20 18:30 编辑
金鹅起飞 发表于 2013-10-19 08:17
st788796:您好!可以请您帮忙编写一个LSP文件吗?cad原图在14楼。谢谢您了!

我的机子上 Xdrx_curve_intersectbreak 运行不稳定,没法调试,基本的都写出来了,
思路就是做 Line 的一个副本,对这个副本进行交点断开,在断开的选择集中生成面域,去掉最大
  1. (defun c:tt (/ ss s1 region areal ar)
  2.   (if (setq ss (ssget '((0 . "line"))))
  3.     (progn
  4.       (setq s1 (xdrx_entity_transformedcopy ss (xdrx_matrix_identity 3))
  5.             ar (apply
  6.                  'xdrx_points_area
  7.                  (xdrx_entity_box ss)
  8.                )                       ; s1     (xdrx_curve_intersectbreak ss 0);_此句运行不稳定
  9.             region (vl-sort (xdrx_pickset->ents (xdrx_curve->region s1 t)) '(lambda (e1 e2)
  10.                                                                               (> (xdrx_region_area e1)
  11.                                                                                  (xdrx_region_area e2)
  12.                                                                               )
  13.                                                                             )
  14.                    )
  15.             areal (vl-remove-if '(lambda (a)
  16.                                    (equal a ar 0.001)
  17.                                  ) (mapcar
  18.                                      '(lambda (x / box w h)
  19.                                         (setq box (xdrx_entity_box x)
  20.                                               w (fix (car (mapcar
  21.                                                             '-
  22.                                                             (cadr box)
  23.                                                             (car box)
  24.                                                           )
  25.                                                      )
  26.                                                 )
  27.                                               h (fix (cadr (mapcar
  28.                                                              '-
  29.                                                              (last box)
  30.                                                              (car box)
  31.                                                            )
  32.                                                      )
  33.                                                 )
  34.                                         )
  35.                                         (list (xdrx_region_area x) w h)
  36.                                       )
  37.                                      (cdddr region)
  38.                                    )
  39.                   )
  40.       )
  41.       (xdrx_entity_delete s1)
  42.       (foreach x region
  43.         (xdrx_entity_delete x)
  44.       )
  45.       (princ areal)
  46.     )
  47.   )
  48.   (princ)
  49. )

点评

我刚才试了一下,请看看图片,不知是我的哪一步有问题,没有出现预期效果。请看图片:  详情 回复 发表于 2013-10-19 10:31
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2013-10-19 10:31:35 | 显示全部楼层
本帖最后由 金鹅起飞 于 2013-10-19 10:33 编辑
st788796 发表于 2013-10-19 09:11
我的机子上 Xdrx_curve_intersectbreak 运行不稳定,没法调试,基本的都写出来了,
思路就是做 Line 的 ...

我刚才试了一下,请看看图片,不知是我的哪一步有问题,没有出现预期效果。请看图片:
如果看不清楚请下载到您的电脑再看,就很清楚了。谢谢您的帮助!

演示文件.gif

点评

翻了翻 API 手册,可以不用生成面域的  详情 回复 发表于 2013-10-19 13:51
要先执行 交点断开, 需要 xd::list:groupbyindex 函数  详情 回复 发表于 2013-10-19 10:43
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-10-19 10:43:21 | 显示全部楼层
金鹅起飞 发表于 2013-10-19 10:31
我刚才试了一下,请看看图片,不知是我的哪一步有问题,没有出现预期效果。请看图片:

要先执行 交点断开, 需要 xd::list:groupbyindex  函数
  1. (defun c:tt (/ ss d region areal ar txt)
  2.   (if (and
  3.         (setq ss (ssget '((0 . "line"))))
  4.         (setq d (getdist "\nInput Thickness: "))
  5.         (setq p (getpoint "\nTextposition: "))
  6.       )
  7.     (progn
  8.       (setq d (fix d)
  9.             ar (apply
  10.                  'xdrx_points_area
  11.                  (xdrx_entity_box ss)
  12.                )
  13.             region (vl-sort (xdrx_pickset->ents (xdrx_curve->region ss t)) '(lambda (e1 e2)
  14.                                                                               (> (xdrx_region_area e1)
  15.                                                                                  (xdrx_region_area e2)
  16.                                                                               )
  17.                                                                             )
  18.                    )
  19.             areal (cdddr (vl-remove-if '(lambda (a)
  20.                                           (equal a ar 0.1)
  21.                                         ) (mapcar
  22.                                             '(lambda (x / box w h lst)
  23.                                                (setq box (xdrx_entity_box x)
  24.                                                      w (fix (car (mapcar
  25.                                                                    '-
  26.                                                                    (cadr box)
  27.                                                                    (car box)
  28.                                                                  )
  29.                                                             )
  30.                                                        )
  31.                                                      h (fix (+ 0.1 (cadr (mapcar
  32.                                                                            '-
  33.                                                                            (last box)
  34.                                                                            (car box)
  35.                                                                          )
  36.                                                                    )
  37.                                                             )
  38.                                                        )
  39.                                                      lst (if (> w h)
  40.                                                            (list w h d)
  41.                                                            (list h w d)
  42.                                                          )
  43.                                                )
  44.                                                (list (xdrx_region_area x) lst)
  45.                                              )
  46.                                             region
  47.                                           )
  48.                          )
  49.                   )
  50.       )
  51.       (foreach x region
  52.         (xdrx_entity_delete x)
  53.       )
  54.       (foreach x (vl-sort (mapcar
  55.                             '(lambda (x)
  56.                                (reverse (cons (length x) (reverse (car x))))
  57.                              )
  58.                             (mapcar
  59.                               'cdr
  60.                               (xd::list:groupbyindex areal 1.)
  61.                             )
  62.                           ) '(lambda (x1 x2)
  63.                                (> (last x1) (last x2))
  64.                              )
  65.                  )
  66.         (setq txt (xdrx_text_make p (strcat (itoa (car x)) "x" (itoa (cadr x)) "x" (itoa (caddr x)) "=" (itoa
  67.                                                                                                               (last x)
  68.                                                                                                         )
  69.                                     ) 17.5 0.
  70.                   )
  71.         )
  72.         (xdrx_setpropertyvalue txt "widthfactor" 0.6)
  73.         (setq p (polar p (* 1.5 pi) 30.))
  74.       )
  75.     )
  76.   )
  77.   (princ)
  78. )

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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-10-19 13:51:33 | 显示全部楼层
金鹅起飞 发表于 2013-10-19 10:31
我刚才试了一下,请看看图片,不知是我的哪一步有问题,没有出现预期效果。请看图片:
如果看不清楚请下 ...

翻了翻 API 手册,可以不用生成面域的
  1. (defun c:tt (/ ss d p pts)
  2.   (if (and
  3. (setq ss (ssget '((0 . "line"))))
  4. (setq d (getdist "\nInput Thickness: "))
  5. (setq p (getpoint "\nTextposition: "))
  6.       )
  7.     (progn
  8.       (setq ;;ss (xdrx_curve_intersectbreak ss 0)
  9.      d (fix d)
  10.      pts (vl-remove
  11.     nil
  12.     (mapcar
  13.       '(lambda (x / box w h lst s1)
  14.          (if (and (setq s1 (ssget "wp" x '((0 . "text"))))
  15.     (= (sslength s1) 1)
  16.       )
  17.     (progn
  18.       (setq box (apply 'xdrx_points_box x)
  19.      w   (rtos (car (mapcar '- (cadr box) (car box)))
  20.         2
  21.         0
  22.          )
  23.      h   (rtos (cadr (mapcar '- (last box) (car box)))
  24.         2
  25.         0
  26.          )
  27.      lst (if (> w h)
  28.            (list w h d)
  29.            (list h w d)
  30.          )
  31.       )
  32.       (cons (abs (apply 'xdrx_points_area x))
  33.      (cons (xdrx_getpropertyvalue
  34.       (ssname s1 0)
  35.       "textstring"
  36.            )
  37.            lst
  38.      )
  39.       )
  40.     )
  41.     nil
  42.          )
  43.        )
  44.       (xdrx_geom_searchregions ss)
  45.     )
  46.   )
  47.      pts (vl-sort pts '(lambda (e1 e2) (> (car e1) (car e2))))
  48.       )
  49.       (foreach x pts
  50. (princ "\n")
  51. (princ x)
  52.       )
  53.     )
  54.   )
  55.   (princ)
  56. )

点评

st788796:您好!非常感谢您在百忙之中编写的程序,谢谢您! 我下载使用了一下,不知哪里我没有操作对,请您看看下面的图片,特别是命令栏,我不知道怎样操作是不是对的,请指教!如果图片看不清楚,请下载到自己的  详情 回复 发表于 2013-10-22 08:14
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-10-22 08:14:19 | 显示全部楼层
st788796 发表于 2013-10-19 13:51
翻了翻 API 手册,可以不用生成面域的

st788796:您好!非常感谢您在百忙之中编写的程序,谢谢您!
我下载使用了一下,不知哪里我没有操作对,请您看看下面的图片,特别是命令栏,我不知道怎样操作是不是对的,请指教!如果图片看不清楚,请下载到自己的电脑,打开看就清楚了,谢谢!

演示文件2.gif

点评

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

使用道具 举报

发表于 2013-10-22 10:26:45 来自手机 | 显示全部楼层
金鹅起飞 发表于 2013-10-22 08:14
st788796:您好!非常感谢您在百忙之中编写的程序,谢谢您!
我下载使用了一下,不知哪里我没有操作对, ...

试了试,结果没有排序,还差写字部分

点评

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

使用道具 举报

发表于 2013-10-22 11:18:12 | 显示全部楼层
学习一下这个帖子

点评

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

使用道具 举报

 楼主| 发表于 2013-10-22 11:44:00 | 显示全部楼层
Free-Lancer 发表于 2013-10-22 10:26
试了试,结果没有排序,还差写字部分

Free-Lancer:
      您好!您能帮忙写一个程序吗?谢谢您!

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

使用道具 举报

 楼主| 发表于 2013-10-22 11:44:41 | 显示全部楼层

谢谢关注!

点评

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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-10-22 22:37:11 | 显示全部楼层
本帖最后由 st788796 于 2013-10-22 22:45 编辑

已经完成,和 API更新同时发布
totlearea.gif

点评

ST788796:您好!谢谢您的帮助,通过您的演示,这就是我想要的结果,谢谢您!可是,我没有看到LSP文件呢?  详情 回复 发表于 2013-10-23 07:59
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-20 07:55 , Processed in 0.381257 second(s), 70 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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