乐筑天下

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

[编程交流] 如何在两端添加圆

[复制链接]

21

主题

61

帖子

44

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
108
发表于 2022-7-5 15:18:20 | 显示全部楼层 |阅读模式
谁能帮我做一个例程,在多段线的每一端放一个圆。。。
所以如果我选择多段线,它会在每一端刻一个直径为2米的圆??
 
或者至少帮我做一个?
回复

使用道具 举报

5

主题

956

帖子

963

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 15:34:03 | 显示全部楼层
 
您好,学习,搜索:
-entmake圆
-LW多段线、顶点坐标等。。
 
或者只是鱼,
用2.0M的圆圈做一个方块,然后看
此处显示最近的线程
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 15:42:51 | 显示全部楼层
这应该很接近了
 
  1. ; add a circle to end of lines for import into the DRAINS software
  2. ; By alan H May 2018
  3. (setq oldsnap (getvar "osmode"))
  4. (setvar "osmode" 0)
  5. (command "layer" "n" "PITS" "Color" 1 "PITS" "s" "PITS" "")
  6. (setq ent (car (entsel "\nSelect drain layer: ")))
  7. (setq l_name (cdr (assoc 8 (entget ent))))
  8. ; (setq listlines (ssget "X" (list (cons 0 "line")(cons 8 l_name))))
  9. ;(setq listlines (ssget "X" (list (cons 0 "line,Lwpolyline")(cons 8 l_name))))
  10. (setq listlines (ssget "X" (list (cons 0 "Lwpolyline")(cons 8 l_name))))
  11. (setq y 0)
  12. (repeat  (sslength listlines)
  13.        (setq pt1 (cdr (assoc 10 (entget (ssname listlines y)))))
  14.        (command "circle" pt1 1.0)
  15.   (setq pt1 (cdr (assoc 11 (entget (ssname listlines y)))))
  16.     (command "circle" pt1 1.0)
  17.        (setq y (+ y 1))
  18. )   ;end repeat listlineno
  19. (setvar "osmode" oldsnap)
回复

使用道具 举报

0

主题

946

帖子

978

银币

限制会员

铜币
-3
发表于 2022-7-5 15:57:14 | 显示全部楼层
 
或者试试这个,你需要输入一次圆半径
 
  1. ;;This will work for LWPolylines 3DPolylines (incl fitted curves) Lines Splines arcs circles ellipses
  2. ;;If object is "closed" and the start point and end point are the same
  3. ;;then the two circles will be at the same point (eg full circles ellipses)
  4. ;;
  5. ;;Make a null selection on Select Line to end
  6. ;;Ron Harman  Copyright © 2014
  7. ;;
  8. (defun c:pcircles (/ *error* c_doc ms circle_rad ent p_obj s_pt e_pt)
  9. (defun *error* ( msg )
  10.    (if (and c_doc (= 8 (logand 8 (getvar 'UNDOCTL)))) (vla-endundomark c_doc))
  11.    (if (not (wcmatch (strcase msg) "*BREAK*,*CANCEL*,*EXIT*")) (alert (strcat "\nOops an Error : " msg " occurred")))
  12.    (princ)
  13. )
  14. (setq c_doc (vla-get-activedocument (vlax-get-acad-object)))
  15. (setq ms (vla-get-modelspace c_doc))
  16. (initget (+ 1 2 4))
  17. (setq circle_rad (getreal "\nEnter Radius for circles : "))
  18. (if (and c_doc (= 8 (logand 8 (getvar 'UNDOCTL)))) (vla-endundomark c_doc))
  19. (vla-startundomark c_doc)
  20. (while (setq ent (entsel "\nSelect Line : "))
  21.    (if (not ent) (progn (vla-endundomark c_doc) (exit)))
  22.    (setq p_obj (vlax-ename->vla-object (car ent))
  23.          s_pt (vlax-curve-getStartPoint p_obj)
  24.          e_pt (vlax-curve-getEndPoint p_obj)
  25.    )
  26.    (vla-addcircle ms (vlax-3d-point s_pt) circle_rad)
  27.    (vla-addcircle ms (vlax-3d-point e_pt) circle_rad)
  28. )
  29. (princ)
  30. )  
  31. (princ)   
  32. (princ "Type "pcircles" to run")
  33. (princ)
回复

使用道具 举报

58

主题

3353

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1761
发表于 2022-7-5 16:15:45 | 显示全部楼层
以此为起点,这应该是你想要的。
  1. (defun c:foo (/ s tmp)
  2. (if (setq s (ssget '((0 . "*polyline"))))
  3.    (foreach l (vl-remove-if 'listp (mapcar 'cadr (ssnamex s)))
  4.      (mapcar '(lambda (x)
  5.          (and (not (vl-position x tmp))
  6.               (setq tmp (cons x tmp))
  7.               ;; '(40 . 1.) 1. is radius below .. change to suit
  8.               (entmakex (list '(0 . "circle") (cons 10 x) '(40 . 1.)))
  9.          )
  10.        )
  11.       (list (vlax-curve-getstartpoint l) (vlax-curve-getendpoint l))
  12.      )
  13.    )
  14. )
  15. (princ)
  16. )
  17. (vl-load-com)
回复

使用道具 举报

21

主题

61

帖子

44

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
108
发表于 2022-7-5 16:29:02 | 显示全部楼层
 
哇,谢谢!正是我需要的
 
 
这么多的代码,我困惑lol!但我喜欢这样的想法,因为输入部分,我可以控制直径
 
 
我喜欢你的代码,我能比其他人更容易理解它,我可以用它作为将来的参考
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-14 13:06 , Processed in 1.667025 second(s), 64 queries .

© 2020-2025 乐筑天下

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