乐筑天下

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

[编程交流] uni中圆的象限

[复制链接]

6

主题

29

帖子

23

银币

初来乍到

Rank: 1

铜币
30
发表于 2022-7-5 23:59:58 | 显示全部楼层 |阅读模式
大家好。
我一直在努力跟上我能听懂的所有Lisp程序的情况,而且我在这方面做得越来越好。如此之多,我已经写了一些没有任何帮助!
 
但唉,我迟早会失败的。所以我爬回来了。
 
我写了这个小口吃。我确信有50种不同的版本,它是在这3个点的UCS内制作一个3点圆,而不需要手动更改UCS。
 
此处显示:
 
  1. ;        3 point circle maker!!!!
  2. ;        11/06/13
  3. ;        Patrick Mitchell
  4. ;        kapatrick@gmail.com
  5. ; picks 3 points, makes those their own UCS and makes a circle in 1 easy step!
  6. ;
  7. ;
  8. (defun c:3PC (/ p1 p2 p3 wp1 wp2 wp3)
  9. (while ;start while
  10. (setq p1 (getpoint "point1"))
  11. (setq p2 (getpoint "point2"))
  12. (setq p3 (getpoint "point3"))
  13. (setq wp1 (trans p1 1 0))
  14. (setq wp2 (trans p2 1 0))
  15. (setq wp3 (trans p3 1 0))
  16. (command "_ucs" "3p" p1 p2 p3)
  17. (command "CIRCLE" "3P" (trans wp1 0 1) (trans wp2 0 1) (trans wp3 0 1))
  18. (command "._ucs" "_w")
  19. (princ)
  20. ) ;end while
  21. )

 
(旁注:我无法让“entmake”以这种方式工作。由于某种原因,我无法让DXF代码和“trans 0 1”工作。我通常喜欢使用entmake,这样我可以命名我的圆和线,并引用它们。)
 
现在,这里是它变得棘手的地方。因为我想“改进”它,但非常具体。
 
我想我需要的大部分代码都可以与“assoc”和“mapcar”一起使用。
 
我在寻找一种方法,当我创建这些圆时,我在寻找这些圆的象限,但在WCS中。据我猜测,这可能是不可能的。因为在WCS中,无法拾取在唯一UCS中生成的圆的象限。到目前为止,我不得不通过在它旁边创建一个圆来伪造它,并根据我的完美圆旋转一些象限线。
 
有什么想法吗?或者我希望有人告诉我这是不可能的,所以我不会在两周内追逐白日梦。
 
谢谢你的时间!
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 00:25:53 | 显示全部楼层
以下示例应在所有UCS和视图中正确执行:
 
  1. ([color=BLUE]defun[/color] c:3pc ( [color=BLUE]/[/color] cn cr nv p1 p2 p3 rd )
  2.    ([color=BLUE]if[/color]
  3.        ([color=BLUE]and[/color]
  4.            ([color=BLUE]setq[/color] p1 ([color=BLUE]getpoint[/color] [color=MAROON]"\n1st point: "[/color]))
  5.            ([color=BLUE]setq[/color] p2 ([color=BLUE]getpoint[/color] [color=MAROON]"\n2nd point: "[/color] p1))
  6.            ([color=BLUE]setq[/color] p3 ([color=BLUE]getpoint[/color] [color=MAROON]"\n3rd point: "[/color] p2))
  7.        )
  8.        ([color=BLUE]if[/color] ([color=BLUE]setq[/color] cr (LM:3PCircle p1 p2 p3))
  9.            ([color=BLUE]progn[/color]
  10.                ([color=BLUE]setq[/color] nv ([color=BLUE]trans[/color] '(0.0 0.0 1.0) 1 0 [color=BLUE]t[/color])
  11.                      cn ([color=BLUE]trans[/color] ([color=BLUE]car[/color] cr) 1 nv)
  12.                      rd ([color=BLUE]cadr[/color] cr)
  13.                )
  14.                ([color=BLUE]entmake[/color]
  15.                    ([color=BLUE]list[/color]
  16.                       '(0 . [color=MAROON]"CIRCLE"[/color])
  17.                        ([color=BLUE]cons[/color] 010 cn)
  18.                        ([color=BLUE]cons[/color] 040 rd)
  19.                        ([color=BLUE]cons[/color] 210 nv)
  20.                    )
  21.                )
  22.                ([color=BLUE]foreach[/color] x
  23.                    ([color=BLUE]list[/color]
  24.                        ([color=BLUE]list[/color] rd 0.0 0.0)
  25.                        ([color=BLUE]list[/color] 0.0 rd 0.0)
  26.                        ([color=BLUE]list[/color] ([color=BLUE]-[/color] rd) 0.0 0.0)
  27.                        ([color=BLUE]list[/color] 0.0 ([color=BLUE]-[/color] rd) 0.0)
  28.                    )
  29.                    ([color=BLUE]entmake[/color]
  30.                        ([color=BLUE]list[/color]
  31.                           '(0 . [color=MAROON]"POINT"[/color])
  32.                            ([color=BLUE]cons[/color] 010 ([color=BLUE]trans[/color] ([color=BLUE]mapcar[/color] '[color=BLUE]+[/color] cn x) nv 0))
  33.                            ([color=BLUE]cons[/color] 210 nv)
  34.                        )
  35.                    )
  36.                )
  37.            )
  38.            ([color=BLUE]princ[/color] [color=MAROON]"\nPoints are collinear."[/color])
  39.        )
  40.    )
  41.    ([color=BLUE]princ[/color])
  42. )
  43. [color=GREEN];; 3-Point Circle  -  Lee Mac[/color]
  44. [color=GREEN];; Returns the Center and Radius of the Circle defined by the supplied three points.[/color]
  45. ([color=BLUE]defun[/color] LM:3PCircle ( p1 p2 p3 [color=BLUE]/[/color] a b c d )
  46.    ([color=BLUE]setq[/color] p2 ([color=BLUE]mapcar[/color] '[color=BLUE]-[/color] p2 p1)
  47.          p3 ([color=BLUE]mapcar[/color] '[color=BLUE]-[/color] p3 p1)
  48.          a  ([color=BLUE]*[/color] 2.0 ([color=BLUE]-[/color] ([color=BLUE]*[/color] ([color=BLUE]car[/color] p2) ([color=BLUE]cadr[/color] p3)) ([color=BLUE]*[/color] ([color=BLUE]cadr[/color] p2) ([color=BLUE]car[/color] p3))))
  49.          b  ([color=BLUE]distance[/color] '(0.0 0.0) p2)
  50.          c  ([color=BLUE]distance[/color] '(0.0 0.0) p3)
  51.          b  ([color=BLUE]*[/color] b b)
  52.          c  ([color=BLUE]*[/color] c c)
  53.    )
  54.    ([color=BLUE]if[/color] ([color=BLUE]not[/color] ([color=BLUE]equal[/color] 0.0 a 1e-)
  55.        ([color=BLUE]list[/color]
  56.            ([color=BLUE]setq[/color] d
  57.                ([color=BLUE]mapcar[/color] '[color=BLUE]+[/color] p1
  58.                    ([color=BLUE]list[/color]
  59.                        ([color=BLUE]/[/color] ([color=BLUE]-[/color] ([color=BLUE]*[/color] ([color=BLUE]cadr[/color] p3) b) ([color=BLUE]*[/color] ([color=BLUE]cadr[/color] p2) c)) a)
  60.                        ([color=BLUE]/[/color] ([color=BLUE]-[/color] ([color=BLUE]*[/color] ([color=BLUE]car[/color]  p2) c) ([color=BLUE]*[/color] ([color=BLUE]car[/color]  p3) b)) a)
  61.                        0.0
  62.                    )
  63.                )
  64.            )
  65.            ([color=BLUE]distance[/color] d p1)
  66.        )
  67.    )
  68. )
回复

使用道具 举报

6

主题

29

帖子

23

银币

初来乍到

Rank: 1

铜币
30
发表于 2022-7-6 00:45:49 | 显示全部楼层
李,你再次令我惊叹。够近了!
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 01:03:59 | 显示全部楼层
不客气Patrick
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-10 21:20 , Processed in 0.368048 second(s), 60 queries .

© 2020-2025 乐筑天下

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