乐筑天下

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

[编程交流] 圆的快捷命令

[复制链接]

2

主题

439

帖子

536

银币

限制会员

铜币
-14
发表于 2022-7-6 15:55:02 | 显示全部楼层
再一个:
 
  1. (defun c:ctd(/ oldOsm oldDia pt1 pt2 *error*)
  2. (defun *error* (msg)
  3.    (setvar "CMDECHO" 1)(setvar "OSMODE" oldOsm)
  4.    (princ "\nCTD command aborted by user... ")
  5.    (princ)
  6.    ); end of *error*
  7. (if(not ctd:diameter)(setq ctd:diameter 1000.0))
  8. (setq oldOsm(getvar "OSMODE")
  9. oldDia ctd:diameter
  10.        ctd:diameter(getdist(strcat "\nDiameter <" (rtos ctd:diameter) ">: ")))
  11. (if(null ctd:diameter)(setq ctd:diameter oldDia))
  12. (setvar "OSMODE" 768)
  13.   (if
  14.     (and
  15.       (setq pt1(getpoint "\nSpecify first tangent point: "))
  16.       (setq pt2(getpoint "\nSpecify second tangent point: "))
  17.      ); end and
  18.     (progn
  19.       (setvar "CMDECHO" 0)(setvar "OSMODE" 0)
  20.       (vl-cmdf "_.circle" "_ttr" pt1 pt2 (/ ctd:diameter 2.0))
  21.       (setvar "OSMODE" oldOsm)(setvar "CMDECHO" 1)
  22.      ); end progn
  23.     ); end if
  24. (princ)
  25. ); end of c:ctd

 
下一个是谁?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 15:57:38 | 显示全部楼层
很好的一个ASMI-我考虑将点输入与命令调用分开以避免错误-但我无法解决如何捕捉它。。。。显然768成功了
 
此外,是否需要使用setenv设置默认值?
回复

使用道具 举报

2

主题

439

帖子

536

银币

限制会员

铜币
-14
发表于 2022-7-6 16:00:13 | 显示全部楼层
 
768等于“u tan”+“u nea”
 
 
我认为是的,但“DIAM”是一个太常见的名称,其他用户(或您)可以在其他程序中重复它。例如,使用“CTD_直径”或类似名称。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 16:02:24 | 显示全部楼层
好的,阿斯米,谢谢你的解释。非常感谢。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 16:06:14 | 显示全部楼层
我想是这样吧?
 
  1. 5
回复

使用道具 举报

4

主题

70

帖子

66

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-6 16:10:37 | 显示全部楼层
您使用“最近的对象捕捉”的想法与其他人使用的想法相同。谢谢大卫。 
 
嗯,正如往常一样,ASMI的代码工作得很神奇。谢谢还有更多。我敢打赌!
 
当然,李的代码也起作用了。
 
给我一些时间使用代码并向您报告。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 16:11:20 | 显示全部楼层
很好,托茨基,谢谢你的夸奖。
 
希望你一切顺利。
回复

使用道具 举报

4

主题

70

帖子

66

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-6 16:16:02 | 显示全部楼层
下面是到目前为止这个LISP的发展。
 
我的问题是:是否可以强制Autocad始终显示切线自动捕捉标记?
回复

使用道具 举报

2

主题

439

帖子

536

银币

限制会员

铜币
-14
发表于 2022-7-6 16:19:02 | 显示全部楼层
 
您可以在OSMODE变量值中包含256,但最近的标记比所有其他标记具有优先级。
 
您可以使用INITGET函数限制零和负用户输入。它适用于(initget…)之后的第一个(get…函数)只有
 
[code](defun c:ctd(/oldOsm oldDia pt1 pt2*error*)(defun*error*(msg)(setvar“CMDECHO”1)(setvar“OSMODE”oldOsm)(警报“ctd命令正在中止…\n\n单击“确定”或按ENTER继续。”)(princ“\nCTD命令被用户中止…”(普林斯));结束*错误*(if(非ctd:直径)(setq ctd:直径10.0))[color=“SeaGreen”](initget 6)(setq oldOsm(getvar“OSMODE”)oldDia ctd:直径ctd:直径(getdist(strcat”\n直径:)(if(null ctd:直径)(setq ctd:直径oldDia))[color=“Red”];;;(如果(
回复

使用道具 举报

4

主题

70

帖子

66

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-6 16:20:46 | 显示全部楼层
我已经用initget 6对您的代码进行了初始测试,这解决了用户输入小于或等于零的问题。
 
自动捕捉标记的问题仍然存在。我想我只能接受这个了。
 
女士们,先生们,请出示圆直径谭谭命令。
Cadtutor版本1!
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-4 19:24 , Processed in 0.663460 second(s), 70 queries .

© 2020-2025 乐筑天下

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