乐筑天下

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

[编程交流] 提示圆圈的lsp帮助

[复制链接]

15

主题

22

帖子

7

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
75
发表于 2022-7-6 08:31:25 | 显示全部楼层 |阅读模式
你好需要有关创建lsp的帮助,该lsp可以:
 
>提示所选圆的总直径,如果输入了新值,则更改为新直径!(输入或右键单击)无更改
 
我对属性尝试了“更改”命令,但它只要求半径而不是直径。。。
因此,需要有关lisp例程的帮助,该例程可以在选定的圆旁边显示/提示/显示直径&如果键入新值,则圆直径会立即更改!
 
谢谢
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 08:53:07 | 显示全部楼层
  1. (defun  c:test (/ cir ent z )
  2. (while (setq cir (ssget ":E:L" '((0 . "CIRCLE"))))
  3.    (setq cur (* (cdr (assoc 40  (setq ent (entget (ssname cir 0))))) 2) )
  4.    (redraw (ssname cir 0) 3)
  5.    (setq
  6.      z (cond
  7.          ((getreal
  8.             (strcat
  9.               "\nEnter diameter[Enter to accept: <"
  10.               (rtos (setq z cur) 2 2)
  11.               ">: "
  12.               )
  13.             )
  14.           )
  15.          (z)
  16.          )
  17.      )
  18.    (entmod
  19.      (subst
  20.        (cons 40 (/ z 2.0))
  21.        (assoc 40 ent)
  22.        ent
  23.        )
  24.      )
  25.    )
  26. (princ)
  27. )

 
几乎,但不是
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 08:55:58 | 显示全部楼层
我没有意识到乘和除2是如此困难。
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 09:18:04 | 显示全部楼层
 
 
可能更糟糕的是,OP可以要求使用Sapi提示输入直径值。间谍语音
 
“输入直径或输入以接受电流”
回复

使用道具 举报

5

主题

1074

帖子

1088

银币

初来乍到

Rank: 1

铜币
9
发表于 2022-7-6 09:20:03 | 显示全部楼层
 
我想,如果你将精度设置为10位小数,并且使用定制的钻头,或者使用数控激光器,那么可能是这样。我使用了相当普通的度量大小,并将mms中的精度设置为无小数位数,这使它更容易实现。如果忘记了lisp的位置,可以选择一个或多个圆,然后在QUICKPROPERTIES调色板中查找并更改直径,我一直在使用该调色板。自定义,使其显示所需的任何信息,或在“常规属性”对话框的“直径”下显示。在我看来,用lisp来做这样的事情有点像是为了解决白蚁问题而出现在水箱里的灭虫器。还有很多路要走,但所有的路都通向家。
回复

使用道具 举报

11

主题

33

帖子

22

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
55
发表于 2022-7-6 09:41:31 | 显示全部楼层
  1. (defun C:TEST11 ()
  2. (defun *error* (msg) (setq *error* nil) (princ))
  3. (setq cirdia (entsel "\nPick circle to change..."))
  4. (setq entdia (entget (car cirdia)))
  5. (setq diarad (cdr (assoc 40 entdia)))
  6. (setq diame (* diarad 2))
  7. (setq dia (getreal (strcat "\nEnter new diameter [current <"(rtos diame) ">]:")))
  8. (prompt "\nSelect circle to change...")
  9. (setq A (ssget (list (cons '0 "circle")(cons '40 diarad))))
  10. (setq B (sslength A))
  11. (setq X 0)
  12. (repeat B
  13.    (setq NAME (ssname A X))
  14.    (setq PARAM (entget NAME))
  15.    (setq CHECK (cdr (assoc 0 PARAM)))
  16.    (if (/= CHECK "CIRCLE")
  17.      (progn (ssdel NAME A)
  18.    (setq X (1- X)))
  19.    ) ;_ end of if
  20.    (setq X (1+ X))
  21. ) ;_ end of repeat
  22. (setq B (sslength A))
  23. (setq RAD (/ DIA 2))
  24. (setq NEWRAD (cons '40 RAD))
  25. (setq X 0)
  26. (repeat B
  27.    (setq NAME (ssname A X))
  28.    (setq PARAM (entget NAME))
  29.    (setq PARAM (subst NEWRAD (assoc 40 PARAM) PARAM))
  30.    (entmod PARAM)
  31.    (setq X (1+ X))
  32. ) ;_ end of repeat
  33. (prompt (strcat "Selected object - Qty:"(rtos b) ""))
  34. (princ)
  35. )
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-7-8 06:27 , Processed in 0.471457 second(s), 65 queries .

© 2020-2025 乐筑天下

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