乐筑天下

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

[编程交流] 对圆圈的天真怀疑

[复制链接]

9

主题

71

帖子

62

银币

初来乍到

Rank: 1

铜币
45
发表于 2022-7-6 06:49:18 | 显示全部楼层 |阅读模式
我已经画了一个圈,我想知道如何得到这4分。
074918foylgw8w2kya1kqo.jpg
我几乎可以肯定,它将使用角度的东西,90º,180º,270º和360º。
但我不知道如何让这个代码工作哈哈D:
你们能帮帮我吗?
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 06:54:49 | 显示全部楼层
试试这个。。。
 
  1. (defun c:Test (/ s e d lst)
  2. (if (and (setq s (car (entsel "\n Select circle :")))
  3.           (eq (cdr (assoc 0 (setq e (entget s)))) "CIRCLE")
  4.           (setq d (cdr (assoc 40 e)))
  5.      )
  6.    (foreach x (list 0. (* pi 0.5) pi (* pi 1.5))
  7.      (setq lst (cons (polar (cdr (assoc 10 e)) x d) lst))
  8.    )
  9. )
  10. lst
  11. )
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 06:56:06 | 显示全部楼层
或者,
  1. (defun c:cpt ( / cn en rd )
  2.    (if (setq en (ssget "_+.:E:S" '((0 . "CIRCLE"))))
  3.        (progn
  4.            (setq en (entget (ssname en 0))
  5.                  cn (cdr (assoc 10 en))
  6.                  rd (cdr (assoc 40 en))
  7.            )
  8.            (mapcar '(lambda ( x ) (mapcar '+ cn x))
  9.                (list (list rd 0.0) (list 0.0 rd) (list (- rd) 0.0) (list 0.0 (- rd)))
  10.            )
  11.        )
  12.    )
  13. )
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 06:59:10 | 显示全部楼层
另一个
 
  1. (defun c:Test (/ FindQuadrants s e)
  2. (defun FindQuadrants (e / d l)
  3.    (setq d (cdr (assoc 40 e)))
  4.    (mapcar (function
  5.              (lambda (x)
  6.                (setq l (vl-list* (polar (cdr (assoc 10 e)) x d) l))
  7.              )
  8.            )
  9.            (list 0. (* pi 0.5) pi (* pi 1.5))
  10.    )
  11.    l
  12. )
  13. (if (and (setq s (car (entsel "\n Select circle :")))
  14.           (eq (cdr (assoc 0 (setq e (entget s)))) "CIRCLE")
  15.      )
  16.    (FindQuadrants e)
  17. )
  18. )
回复

使用道具 举报

0

主题

375

帖子

385

银币

限制会员

铜币
-7
发表于 2022-7-6 07:02:43 | 显示全部楼层
还有一个
  1. (defun C:QPOINTS ( / e)
  2. (if
  3.    (setq e (ssget ":E:S" '((0 . "CIRCLE"))))
  4.    ((lambda (p e)
  5.       (mapcar
  6.         (function
  7.           (lambda (x)
  8.             (vlax-curve-getPointAtParam e (* pi x))
  9.             )
  10.           )
  11.         p
  12.         )
  13.       )
  14.      '(0.0 0.5 1.0 1.5)
  15.      (ssname e 0)
  16.      )
  17.    )
  18. )
回复

使用道具 举报

9

主题

71

帖子

62

银币

初来乍到

Rank: 1

铜币
45
发表于 2022-7-6 07:05:59 | 显示全部楼层
谢谢大家
总有一天我会学到足够的lisp语言):
 
有没有办法让这段代码更漂亮?
  1. (setq s (ssget "_+.:E:S" '((-4 . "<OR")(0 . "LWPOLYLINE")(0 . "CIRCLE")(-4 . "OR>"))))
  2. (setq tipo (cdr(assoc 0(entget(ssname s 0)))))
  3.    (if (= "LWPOLYLINE" tipo)
  4.    ................................
  5.    )
  6.    (if (= "CIRCLE" tipo)
  7.    ................................
  8.    )
  9. )
  10. (defun LM:MAssoc ( key lst / item )
  11.    (if (setq item (assoc key lst))
  12.        (cons (cdr item) (LM:MAssoc key (cdr (member item lst))))
  13.    )
  14. )

 
你在哪里写代码?
你们什么时候开始学Lisp程序的?
 
对不起,问题太多了哈哈
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 07:10:40 | 显示全部楼层
这个也可以。
 
  1. (defun c:TesT (/ s e d i l) (vl-load-com)
  2. (if (and (setq s (car (entsel "\n Select circle :")))
  3.           (eq (cdr (assoc 0 (setq e (entget s)))) "CIRCLE")
  4.      )
  5.    (progn
  6.      (setq d (/ (* pi (* (cdr (assoc 40 e)) 2.)) 4.) i d )
  7.      (repeat 4 (setq l (vl-list* (vlax-curve-getpointatdist s i) l)
  8.              i (+ i d)
  9.        ))
  10.      ))
  11. l
  12. )
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 07:12:55 | 显示全部楼层
另一个:
  1. (defun c:cpts ( / cn en pt pl )
  2.    (if (setq en (ssget "_+.:E:S" '((0 . "CIRCLE"))))
  3.        (progn
  4.            (setq en (entget (ssname en 0))
  5.                  cn (cdr (assoc 10 en))
  6.                  pt (list (cdr (assoc 40 en)) 0.0)
  7.            )
  8.            (repeat 4
  9.                (setq pt (list (cadr pt) (- (car pt)))
  10.                      pl (cons (mapcar '+ cn pt) pl)
  11.                )
  12.            )
  13.        )
  14.    )
  15. )
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 07:17:17 | 显示全部楼层
 
我猜你在找这样的东西:
  1. (defun c:myprogram ( / cen enx pnt sel )
  2.    (if (setq sel (ssget "_+.:E:S" '((0 . "LWPOLYLINE,CIRCLE"))))
  3.        (if (= "LWPOLYLINE" (cdr (assoc 0 (setq enx (entget (ssname sel 0))))))
  4.            (while (setq pnt (assoc 10 enx))
  5.                (entmake (list '(0 . "POINT") pnt))
  6.                (setq enx (cdr (member pnt enx)))
  7.            )
  8.            (progn
  9.                (setq cen (cdr (assoc 10 enx))
  10.                      pnt (list (cdr (assoc 40 enx)) 0.0)
  11.                )
  12.                (repeat 4
  13.                    (setq pnt (list (cadr pnt) (- (car pnt))))
  14.                    (entmake (list '(0 . "POINT") (cons 10 (mapcar '+ cen pnt))))
  15.                )
  16.            )
  17.        )
  18.    )
  19.    (princ)
  20. )

 
PS:我希望你以后能保留我的函数头
回复

使用道具 举报

11

主题

968

帖子

919

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
99
发表于 2022-7-6 07:17:50 | 显示全部楼层
两个位置之一:
[列表=1]
  • ACad的VLIDE(只需在命令提示符下键入VLIDE)。允许您在acad中直接运行代码并进行调试,您还可以检查其他内容或列出所有lisp符号,还具有自动格式化功能,通过放置新行和缩进来重新排列代码。
  • 使用程序员的文本编辑器(http://sixrevisions.com/tools/12-excellent-free-text-editors-for-coders/),普通的记事本之类的东西在我看来有点无用。我要么使用记事本++要么使用SciTE,但其他很多人都有类似的功能。这些工具通常有更多用于编辑代码的工具,如正则表达式搜索和替换、折叠、行号、括号级别指示等。编辑器在确定代码正在做什么以及是否在某处出现拼写错误方面起着很大的作用,例如,有了一个像样的编辑器,你永远不需要计算需要多少右括号。
    [/列表]
    我认为这里的大多数人都来自各行各业的编程。特别是在Lisp中,你会发现许多人只是因为需要一些使任务更容易/更快的东西才开始。一直到其他以前是程序员,现在也做AutoLisp的人。这完全取决于他们想要达到的程度。 
    就我个人而言,我从80年代末开始使用AutoLisp,自己动手处理。实际上,我第一次接触编程是在学校的时候,在一台旧的IBM-PC上玩GWBasic,但我真的不算,因为我只是玩了一会儿。后来我实际上获得了计算机科学学位,并“学会”编程(用其他语言,如Pascal、C++、Java)。从那时起,编程就是我喜欢做的事情。只要有可能,我就会努力学习一门“新”语言。当你看到其他语言如何处理某些任务时,你会发现新的想法,使你能够用一种旧语言以不同的方式做一些事情——尽管不一定更好。
     
    虽然从我所学的所有语言中,只有lisp给了我如此大的帮助。其他任务从极其复杂到无法完成类似任务,再到过于简单而无法发挥作用。但是,在如此简单的安排中,没有其他人像lisp那样有如此多的能力。注意,这里我指的是布拉德意义上的Lisp——AutoLisp只是一种方言,它已经被切碎,忽略了真正的Lisp实际上可以做的大量工作。
  • 回复

    使用道具 举报

    发表回复

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

    本版积分规则

    • 微信公众平台

    • 扫描访问手机版

    • 点击图片下载手机App

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

    GMT+8, 2025-3-10 15:17 , Processed in 0.663850 second(s), 75 queries .

    © 2020-2025 乐筑天下

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