找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 672|回复: 7

[求助] 帮忙看看怎么样实现这种快速填充

[复制链接]

已领礼包: 138个

财富等级: 日进斗金

发表于 2017-5-25 14:11:29 | 显示全部楼层 |阅读模式

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

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

×
要打到的目的:选取圆,自动填充对角。
我自己写的
  • (defun C:TC ()
  •   (setvar "cmdecho" 0)
  •   (setvar "hpassoc" 1)
  •   (setvar "hpseparate" 1)
  •   (command "HpName" "SOLID" "" )
  •   (command "HpScale" 1)
  •   (command "layer" "m" "8符号标注层" "")
  •   (setvar "clayer"  "8符号标注层" )
  •   (command "BHATCH" "s" "" )
  •   (princ)
  • )




每次都要先画好中心线,再选两次填充点,有点麻烦。

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

已领礼包: 1268个

财富等级: 财源广进

发表于 2017-5-25 14:49:35 | 显示全部楼层

  1. (defun c:tt (/ pt->2d mkpl _pi2 _3pi bulge s e el sl p r)
  2.   (defun pt->2d        (p)
  3.     (list (car p) (cadr p))
  4.   )
  5.   (defun mkpl (p r)
  6.     (entmakex (list '(0 . "LWPOLYLINE")
  7.                     '(100 . "AcDbEntity")
  8.                     '(100 . "AcDbPolyline")
  9.                     '(90 . 4)
  10.                     '(70 . 1)
  11.                     (cons 10 (pt->2d (polar p pi r)))
  12.                     '(40 . 0.0)
  13.                     '(41 . 0.0)
  14.                     '(42 . 0.0)
  15.                     '(91 . 0)
  16.                     (cons 10 (pt->2d (polar p 0.0 r)))
  17.                     '(40 . 0.0)
  18.                     '(41 . 0.0)
  19.                     (cons 42 bulge)
  20.                     '(91 . 0)
  21.                     (cons 10 (pt->2d (polar p _pi2 r)))
  22.                     '(40 . 0.0)
  23.                     '(41 . 0.0)
  24.                     '(42 . 0.0)
  25.                     '(91 . 0)
  26.                     (cons 10 (pt->2d (polar p _3pi r)))
  27.                     '(40 . 0.0)
  28.                     '(41 . 0.0)
  29.                     (cons 42 (- bulge))
  30.                     '(91 . 0)
  31.                     '(210 0.0 0.0 1.0)
  32.               )
  33.     )
  34.   )
  35.   (setq        _pi2  (* pi 0.5)
  36.         _3pi  (* pi 1.5)
  37.         bulge (/ (sin (/ pi 8)) (cos (/ pi 8)))
  38.   )
  39.   (if (setq ss (ssget '((0 . "circle"))))
  40.     (progn
  41.       (setq sl 0
  42.             s  (ssadd)
  43.       )
  44.       (while (setq e (ssname ss sl))
  45.         (setq el (entget e)
  46.               p         (cdr (assoc 10 el))
  47.               r         (cdr (assoc 40 el))
  48.               sl (1+ sl)
  49.         )
  50.         (ssadd (mkpl p r) s)
  51.       )
  52.       (command ".hatch" "s" s "")
  53.       (command ".erase" s "")
  54.     )
  55.   )
  56.   (princ)
  57. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 138个

财富等级: 日进斗金

 楼主| 发表于 2017-5-25 15:28:21 | 显示全部楼层

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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2017-5-25 17:10:32 | 显示全部楼层
本帖最后由 newer 于 2017-5-25 18:15 编辑

XDRX API写一个,批量处理,并且自动转成块实体,所有的圆都变成一个块定义,图纸小。
圆转块标记.gif

  1. (defun c:tt ()
  2.   (defun _process (e)
  3.     (defun _makeblk (/ e)
  4.       (setq e (xdrx_circle_make (setq cen '(0 0 0)) 1.0)
  5.             pnts (xdrx_getsamplept e 5)
  6.             ge1         (xdge::constructor e)
  7.             ge2         (xdge::constructor e)
  8.       )
  9.       (xdge::setpropertyvalue ge1 "setinterval" 0.0 (/ pi 2.0))
  10.       (xdge::setpropertyvalue ge2 "setinterval"        pi (/ (* pi 3.0) 2.0))
  11.       (setq l1 (xdge::constructor "kLineSeg3d" (nth 1 pnts) cen)
  12.             l2 (xdge::constructor "kLineSeg3d" cen (nth 2 pnts))
  13.             l3 (xdge::constructor "kLineseg3d" (nth 3 pnts) cen)
  14.             l4 (xdge::constructor "kLineseg3d" cen (last pnts))
  15.             pl (xdge::constructor
  16.                  "kCompositecrv3d"
  17.                  (list ge1 l1 l2 ge2 l3 l4)
  18.                )
  19.       )
  20.       (setq e1 (xdge::entity:make pl))
  21.       (xdge::free gl)
  22.       (setq e2 (xdrx_hatch_make e1))
  23.       (xdrx_block_make "blk-bj-1" (list e e2))
  24.       (xdrx_entity_delete e1 e e2)    )
  25.     (xdrx_getpropertyvalue e "center" "radius")
  26.     (if        (not (tblsearch "block" "blk-bj-1"))
  27.       (_makeblk)
  28.     )
  29.     (xdrx_insert_make "blk-bj-1" #center #radius)
  30.     (xdrx_entity_delete e)
  31.   )
  32.   (xdrx_begin)
  33.   (if (and (xdrx_initssget "\n选取要处理的圆<退出>:")
  34.            (setq ss (xdrx_ssget '((0 . "CIRCLE"))))
  35.       )
  36.     (progn
  37.       (mapcar '(lambda (x) (_process x)) (xdrx_pickset->ents ss))
  38.     )
  39.   )
  40.   (xdrx_end)
  41.   (princ)
  42. )


换种写法:

  1. (defun c:tt ()
  2.   (defun _process (e)
  3.     (defun _makeblk (/ e)
  4.       (setq e (xdrx_circle_make (setq cen '(0 0 0)) 1.0)
  5.             bulge (- (/ 2 (sqrt 2.0)) 1.0)
  6.             pts (list '(1.0 0.0 0.0)'(0.0 1.0 0.0)'(0.0 0.0 0.0)'(-1.0 0.0 0.0)'(0.0 -1.0 0.0) '(0.0 0.0 0.0) '(1.0 0.0 0.0 ))
  7.             bulges (list bulge 0.0 0.0 bulge 0.0 0.0))
  8.       (setq e1 (xdrx_polyline_make pts bulges))
  9.       (setq e2 (xdrx_hatch_make e1))
  10.       (xdrx_block_make "blk-bj-1" (list e e2))
  11.       (xdrx_entity_delete e e1 e2)
  12.     )
  13.     (xdrx_getpropertyvalue e "center" "radius")
  14.     (if        (not (tblsearch "block" "blk-bj-1"))
  15.       (_makeblk)
  16.     )
  17.     (xdrx_insert_make "blk-bj-1" #center #radius)
  18.     (xdrx_entity_delete e)
  19.   )
  20.   (if (and (xdrx_initssget "\n选取要处理的圆<退出>:")
  21.            (setq ss (xdrx_ssget '((0 . "CIRCLE"))))
  22.       )
  23.     (progn
  24.       (mapcar '(lambda (x) (_process x)) (xdrx_pickset->ents ss))
  25.     )
  26.   )
  27.   (princ)
  28. )




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

使用道具 举报

已领礼包: 859个

财富等级: 财运亨通

发表于 2017-5-25 19:45:52 来自手机 | 显示全部楼层
按1:1做一个块,循环插入圆心,半径为比例
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 138个

财富等级: 日进斗金

 楼主| 发表于 2017-5-25 20:21:25 | 显示全部楼层

厉害,要是能过滤掉牙孔,和沉头孔  只选择整数的光孔就好了。


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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2017-5-25 20:35:00 | 显示全部楼层

别说那么多专业术语, 单独发个帖子,用图说话,图上标明 什么  你想 得到 什么。
同时附上一个低版本保存的DWG,供帮你的朋友测试用。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 138个

财富等级: 日进斗金

 楼主| 发表于 2017-5-25 20:57:35 | 显示全部楼层

我的意思是上边那些都过滤掉,只选下面这种只有一个圆的,且直径是4  5  6  8的圆。
tc.png
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-24 04:20 , Processed in 0.418301 second(s), 45 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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