乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
楼主: BrianTFC

[编程交流] 直线为pi时插入圆

[复制链接]

39

主题

180

帖子

141

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
195
发表于 2022-7-6 09:13:32 | 显示全部楼层
效果很好。。。。谢谢
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
211
发表于 2022-7-6 09:18:25 | 显示全部楼层
另一个
 
  1. (defun c:acir  (/ circle _moveblk aDoc ss e ang pts ln p1 p2 cir1 cir2 entm_ entm gr code cord)
  2.      (if (not (member "geomcal.arx" (arx)))
  3.            (arxload "geomcal")
  4.            )
  5.      (setvar 'osmode 0)
  6.      (defun circle  (Doc p r)
  7.            (vlax-invoke
  8.                  (vlax-get (vla-get-ActiveLayout Doc) 'Block)
  9.                  'AddCircle p  r
  10.                  )
  11.            )
  12.      (defun _moveblk  (flg ent bp np)
  13.            (if (not flg)
  14.                  (vla-move
  15.                        (setq flg (vla-copy ent))
  16.                        (vlax-3d-point bp)
  17.                        (vlax-3d-point np)
  18.                        )
  19.                  (progn (vla-delete flg) (setq flg nil))
  20.                  )
  21.            flg
  22.            )
  23.      (setq aDoc (vla-get-activedocument (vlax-get-acad-object)))
  24.      (if
  25.      (setq ss (ssget '((0 . "LINE"))))
  26.      (repeat (setq i (sslength ss))
  27.            (setq e (ssname ss (setq i (1- i))))
  28.            (redraw e 3)
  29.            (setq ang (apply 'angle
  30.                             (setq pts  (mapcar
  31.                                              '(lambda (d)
  32.                                                     (cdr  (assoc
  33.                                                                 d
  34.                                                                 (entget e))))
  35.                                              '(10 11))
  36.                                   )))
  37.            (if (> (setq ln (apply 'distance pts)) 12.0)
  38.                  (progn
  39.                        (redraw e 3)
  40.                        (setq p1 (Car pts)
  41.                              p2 (Cadr pts))
  42.                        (setq cir1 (circle aDoc
  43.                                           (setq uPt1 (polar (vlax-curve-getPointAtDist
  44.                                                          e 6.0) (+ ang (/ pi 2.)) 0.375))
  45.                                           0.1875))
  46.                        (setq cir2 (circle aDoc
  47.                                           (setq uPt2 (polar (vlax-curve-getPointAtDist
  48.                                                          e (- ln 6.0)) (+ ang (/ pi  2.))  0.375))
  49.                                           0.1875))
  50.                        (prompt "\nDrag & Pick Location rebar location:")
  51.                        (while
  52.                              (progn
  53.                                    (setq gr   (grread t 15 0)
  54.                                          code (car gr)
  55.                                          cord (cadr gr)
  56.                                          )
  57.                                    (cond
  58.                                  ((and (= 5 code)(> (c:cal "ang(p1,p2,cord)") 180))
  59.                                   (setq entm (_moveblk entm cir1 uPt1
  60.                                                    (setq uPt1 (polar uPt1 (+ ang (* pi 1.5)) 0.75))))
  61.                                   (setq entm_ (_moveblk entm_ cir2 uPt2
  62.                                                     (setq uPt2 (polar uPt2 (+ ang (* pi 1.5)) 0.75)))) T
  63.                                   )
  64.                                  ((and (= 5 code)(< (c:cal "ang(p1,p2,cord)") 180))
  65.                                   (setq entm (_moveblk entm cir1 uPt1
  66.                                                    (setq uPt1 (polar uPt1 (+ ang (/ pi 2.)) 0))))
  67.                                   (setq entm_ (_moveblk entm_  cir2  uPt2
  68.                                                     (setq uPt2 (polar uPt2 (+ ang (/ pi 2.)) 0)))) T
  69.                                   )
  70.                                  )
  71.                                    )
  72.                              )
  73.                        (vla-delete cir1)
  74.                        (vla-delete cir2)
  75.                        )
  76.                  )(redraw e 4)(setq entm nil entm_ nil)
  77.            )
  78.       )(princ)
  79.      )(vl-load-com)
  80. (princ)

 
如果长度小于12个单位,则不会处理这些线。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-9 09:19 , Processed in 1.297753 second(s), 55 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表