乐筑天下

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

[编程交流] 从选定对象中画一个圆

[复制链接]

66

主题

180

帖子

119

银币

后起之秀

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

铜币
341
发表于 2022-7-5 15:47:30 | 显示全部楼层 |阅读模式
  1. (defun c:cxircle(/ PT1 PT2 s)
  2. (setq s (ssget '((0 . "LINE"))))
  3. PT1 (cdr (assoc 10 s))
  4. PT2 (cdr (assoc 11 s))
  5.    (command "LINE" PT1 PT2 "")            
  6.    (command "CIRCLE" "2P" PT1 PT2)     
  7. )

 
先生,有人能帮我做一个简单的Lisp程序从一条直线上画一个圆吗??
圆的直径将与我选择的线的长度相同
回复

使用道具 举报

76

主题

312

帖子

254

银币

后起之秀

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

铜币
390
发表于 2022-7-5 16:10:28 | 显示全部楼层
像这样的?
 
  1. (defun C:CADTUTOR ( / ss n ensel enlist )
  2. (setq ss (ssget ":L" (list (cons 0 "Line"))))
  3. (if ss
  4.         (progn
  5.                 (setq n 0)
  6.                 (repeat (sslength ss)
  7.                         (setq ensel (ssname ss n))
  8.                         (setq enlist (entget ensel))
  9.                         (command "CIRCLE" "2P" (cdr (assoc 10 enlist)) (cdr (assoc 11 enlist)))
  10.                         (setq n (+ n 1))
  11.                 )
  12.         )
  13.         (progn
  14.                 (princ "No line(s) selected.")
  15.         )
  16. )
  17. (princ)
  18. )
回复

使用道具 举报

66

主题

180

帖子

119

银币

后起之秀

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

铜币
341
发表于 2022-7-5 16:22:27 | 显示全部楼层
就是这样!!!!!!!
天哪,你真节省时间!非常感谢!先生
回复

使用道具 举报

76

主题

312

帖子

254

银币

后起之秀

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

铜币
390
发表于 2022-7-5 16:25:44 | 显示全部楼层
欢迎光临,
 
对于您的学习:
您的代码如下:
  1. (defun c:cxircle(/ PT1 PT2 s)
  2. (setq s (ssget '((0 . "LINE"))))
  3. PT1 (cdr (assoc 10 s))
  4. PT2 (cdr (assoc 11 s))
  5.    (command "LINE" PT1 PT2 "")            
  6.    (command "CIRCLE" "2P" PT1 PT2)     
  7. )

 
尝试根据分配给选择集本身的“s”设置PT1和PT2。
您忘记从该选择集中获取实体。
要做到这一点,您必须先获得ssname:-)
回复

使用道具 举报

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-5 16:42:07 | 显示全部楼层
或者这个
 
仅具有相同Z轴值的WCS线
 
  1. [b][color=BLACK]([/color][/b]defun c:wlin2cir [b][color=FUCHSIA]([/color][/b]/ ss i en ed p10 p11 mp lt tk cl[b][color=FUCHSIA])[/color][/b]
  2. [b][color=FUCHSIA]([/color][/b]princ [color=#2f4f4f]"\nSelect Lines To Convert To Circles..."[/color][b][color=FUCHSIA])[/color][/b]
  3. [b][color=FUCHSIA]([/color][/b]while [b][color=NAVY]([/color][/b]setq ss [b][color=MAROON]([/color][/b]ssget [b][color=GREEN]([/color][/b]list [b][color=BLUE]([/color][/b]cons 0 [color=#2f4f4f]"LINE"[/color][b][color=BLUE])[/color][/b][b][color=BLUE]([/color][/b]list 210 0 0 1[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
  4.         [b][color=NAVY]([/color][/b]setq i 0[b][color=NAVY])[/color][/b]
  5.         [b][color=NAVY]([/color][/b]while [b][color=MAROON]([/color][/b]setq en [b][color=GREEN]([/color][/b]ssname ss i[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
  6.                [b][color=MAROON]([/color][/b]setq ed [b][color=GREEN]([/color][/b]entget en[b][color=GREEN])[/color][/b]
  7.                     p10 [b][color=GREEN]([/color][/b]cdr [b][color=BLUE]([/color][/b]assoc 10 ed[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
  8.                     p11 [b][color=GREEN]([/color][/b]cdr [b][color=BLUE]([/color][/b]assoc 11 ed[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
  9.                      mp [b][color=GREEN]([/color][/b]mapcar '[b][color=BLUE]([/color][/b]lambda [b][color=RED]([/color][/b]a b[b][color=RED])[/color][/b] [b][color=RED]([/color][/b]* [b][color=PURPLE]([/color][/b]+ a b[b][color=PURPLE])[/color][/b] 0.5[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b] p10 p11[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
  10.                [b][color=MAROON]([/color][/b]or [b][color=GREEN]([/color][/b]setq lt [b][color=BLUE]([/color][/b]assoc 6 ed[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
  11.                    [b][color=GREEN]([/color][/b]setq lt [b][color=BLUE]([/color][/b]cons 6 [color=#2f4f4f]"BYLAYER"[/color][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
  12.                [b][color=MAROON]([/color][/b]or [b][color=GREEN]([/color][/b]setq tk [b][color=BLUE]([/color][/b]assoc 39 ed[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
  13.                    [b][color=GREEN]([/color][/b]setq tk [b][color=BLUE]([/color][/b]cons 39 0[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
  14.                [b][color=MAROON]([/color][/b]or [b][color=GREEN]([/color][/b]setq cl [b][color=BLUE]([/color][/b]assoc 62 ed[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
  15.                    [b][color=GREEN]([/color][/b]setq cl [b][color=BLUE]([/color][/b]cons 62 256[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
  16.                [b][color=MAROON]([/color][/b]if [b][color=GREEN]([/color][/b]equal [b][color=BLUE]([/color][/b]caddr p10[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]caddr p11[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
  17.                    [b][color=GREEN]([/color][/b]entmake [b][color=BLUE]([/color][/b]list [b][color=RED]([/color][/b]cons 0 [color=#2f4f4f]"CIRCLE"[/color][b][color=RED])[/color][/b]
  18.                                   [b][color=RED]([/color][/b]assoc 8 ed[b][color=RED])[/color][/b]
  19.                                   [b][color=RED]([/color][/b]cons 10 mp[b][color=RED])[/color][/b]
  20.                                   [b][color=RED]([/color][/b]cons 40 [b][color=PURPLE]([/color][/b]distance p10 mp[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b]
  21.                                   lt tk cl[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
  22.                    [b][color=GREEN]([/color][/b]alert [color=#2f4f4f]"LINEs Found That Are Not Coplaner..."[/color][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
  23.                [b][color=MAROON]([/color][/b]setq i [b][color=GREEN]([/color][/b]1+ i[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  24. [b][color=FUCHSIA]([/color][/b]prin1[b][color=FUCHSIA])[/color][/b][b][color=BLACK])[/color][/b]

 
应匹配图层、颜色、厚度和线型
 
-大卫
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 16:58:58 | 显示全部楼层
  1. (defun c:l2c (/ sel int ent str end)
  2. (if (setq int -1 sel (ssget '((0 . "LINE"))))
  3.    (while (setq ent (ssname sel (setq int (1+ int))))
  4.      (setq str (cdr (assoc 10 (entget ent)))
  5.            end (cdr (assoc 11 (entget ent)))
  6.      )
  7.      (entmake
  8.        (list '(0 . "CIRCLE")
  9.              (cons 10 (mapcar '(lambda (q p) (* (+ q p) 0.5)) str end))
  10.              (cons 40 (/ (distance str end) 2.))
  11.        )
  12.      )
  13.    )
  14. )
  15. (princ)
  16. )
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

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

© 2020-2025 乐筑天下

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