明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4967|回复: 8

【求助】CAD2010中用LISP调用FILLET命令的困惑

[复制链接]
发表于 2009-9-2 11:10 | 显示全部楼层 |阅读模式

LISP代码如下:

(defun c:F () (command "FILLET" "U") (princ))         ;连续倒圆角

该代码在CAD2010下执行时若要先设定圆角半径(如输入“F”→“R”→“5”),则设定完半径后会退出FILLET,无法返回。

但是同样的LISP代码,在CAD2008下执行的话设定圆角半径后能自动返回FILLET命令而不会退出。

倒角“CHAMFER”也有类似的问题。

请问如何让CAD2010执行上面的LISP代码时能像CAD2008那样呢?

发表于 2009-9-2 11:45 | 显示全部楼层
在程序中这两个命令是按旧版命令格式运行的。这是为了程序向低版本兼容。
旧版执行这两个命令时,如果设定圆角半径或倒角尺寸后会退出命令。
发表于 2009-9-2 11:49 | 显示全部楼层

这可能要用程序来实现,好像R14、2004等都有这样的问题的,你可以用entsel来模拟选择,用initget来判断是不是输入“R”,如果你对编程有一点了解的话,应该可以做出来的,不知道能不能在CAD里面设置,这没有试过

发表于 2009-9-2 13:11 | 显示全部楼层

(defun c:aa( / )
(setq r (getreal "\n半径:") )
(setvar "filletrad" r)
(command "fillet" "u")
(princ)
)

 楼主| 发表于 2010-4-24 13:37 | 显示全部楼层

请问用LISP调用和直接输入“fillet”的提示为何不一样??(AutoCAD 2010)

命令: f
选择第一个对象或 [放弃(N)/多段线(P)/半径(R)/修剪(T)/多个(U)]: 

命令: fillet
当前设置: 模式 = 修剪,半径 = 5.0000
选择第一个对象或 [放弃(U)/多段线(P)/半径(R)/修剪(T)/多个(M)]:

发表于 2010-5-15 11:26 | 显示全部楼层

好像CAD就是这样的,FILLET和CHA两个命令在调用的时候,输入R或边长后会自动返回,我的做法是再调用一次

(defun c:r1() (command "fillet" "r" "1" "fillet"))

发表于 2011-9-2 08:36 | 显示全部楼层
http://www.autodesk.com.cn/adsk/ ... 359&id=13617862
在使用AutoLISP时可以在命令前使用InitCommandVersion功能来指定哪个版本的AutoLISP命令将被使用。 InitCommandVersion 功能的语法如下:

(InitCommandVersion <version_number>)

其中,<version_number〉控制命令在执行时哪个版本的命令将会被调用。

下面的例子显示了如何调用:

FILFET命令版本1。

(InitCommandVersion 1)
(command “fillet”)

调用FILFET命令版本1将会显示以下的命令提示符:

Current settings: Mode = TRIM, Radius = 0.1000
Select first object or [uNdo/Polyline/Radius/Trim/mUltiple]:

版本2是FILFET命令的第二版(或者说,当前的最新版)相当如在宏命令中使用^R控制符。

调用FILFET命令版本2将会显示以下的命令提示符:

Current settings: Mode = TRIM, Radius = 0.1000
Select first object or [Undo/Polyline/Radius/Trim/Multiple]:

虽然这个帖子中告诉了为什么有差异,差异怎么改?但是我还是不会,希望好心人可以帮忙把楼上的程序改改。改成直接可以在CAD2009以上的版本中,可以多重的倒角了。
谢谢!
发表于 2011-9-2 09:25 | 显示全部楼层
(defun c:tt()
  (initcommandversion 2)(command ".fillet" "m")
  (princ)
)
这样就可以了。
 楼主| 发表于 2011-12-31 13:27 | 显示全部楼层
andyhua 发表于 2011-9-2 09:25
(defun c:tt()
  (initcommandversion 2)(command ".fillet" "m")
  (princ)

这么久了还有热心人回复,谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-20 04:34 , Processed in 0.380059 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表