Bhanson 发表于 2022-7-6 09:59:55

有没有办法使用variab

我在autocad中有一些旧的CNC切割文件,需要更新为改进的设计,但我需要能够根据用户键入的输入删除图形中的对象(我不能简单地使用光标选择点)。我一直在努力让这个代码工作,但我就是想不出来。关于如何使其工作或如何改进我的代码,有什么想法吗?我还需要使用下面显示的stretch命令使用类似的格式。
 
 
(定义C:OCNCU();旧CNC更新
 
(setq len(getdist“Enter Cover Length=”);封面长度用户输入
 
(setq ptX(-len 0.25))
(命令“.erase”(ssget“_C”'(0.25 25.0)'(ptx 26.0)“”);删除多余的行
(setq SX(rtos 0.0)SY(rtos(/len 20)))
(命令“.stretch”(ssget“_C”'(70.0 38.0)'(ptx 41.0))“0,0”(strcat SX”,“SY))
 
(命令“zoom”“e”)
); OCNCU结束
 
提前感谢您的帮助!

David Bethel 发表于 2022-7-6 10:13:44

欢迎来到论坛!
 
首先尝试:
(list stx 36.0)
&
(list ptx 41.0)

 
其次,如果您尝试将nnn单位添加到选择集的X轴,那么我将尝试修改实体,而不是尝试使用奇怪的STRECTH命令。
 
你有可以发布的图纸吗-大卫

alanjt 发表于 2022-7-6 10:27:59

拉伸是一个伟大的命令,但不可能与命令一起正常工作。你最好做所有的脏活。

CALCAD 发表于 2022-7-6 10:32:43

班森,
我对你的代码做了一点修改。它执行,尽管我不确定它是否在做你想做的事情。虽然拉伸命令似乎已经完成,但正如Dave和Alan警告的那样,它可能正在做一些奇怪的事情。
 
(defun C:OCNCU ( ) ; Old CNC Update

(setq len (getdist "Enter Cover Length = ")); Cover Length User Input

(setq ptx (- len 0.25))

;(command ".delete" (ssget "C" '(0.25 25.0) '(ptx 26.0)) "") ; Erase Extra Lines
(command ".delete" (ssget "C" (list 0.25 0.25) (list ptx 26.0)) "")               ; added close parens

;(setq SX (rtos 0.0) SY (rtos (/ len 20)))
(setq SX 0.0 SY (/ len 20))                        ; must be reals - can't be strings
                        
;(command ".stretch" (ssget "C" (list 9.1 0.25) (list ptx 41.0)) "" (list 0 0) "" (list SX SY))
(command ".stretch" (list 9.1 0.25) (list ptx 41.0) "" (list 0 0) (list SX SY)); give it discrete points instead of SS
(command "zoom" "e")
); end of OCNCU

Bhanson 发表于 2022-7-6 10:47:30

它起作用了!!!!!!!谢谢你的帮助。我无法使用“.delete”命令,因为我的autocad由于某种原因无法识别它,但我能够使“.erase”命令与我认为您的预期一样工作。我会研究拉伸函数,看看它是如何工作的,然后告诉你。我经常使用伸展训练,对我来说效果很好,所以我会看看效果如何。
 
(setq len 101.25)
 
;(setq len(getdist“Enter Cover Length=”);封面长度用户输入
;出于测试目的,我对这部分进行了注释
 
(setq ptx(-len 0.25))
(命令“.erase”(ssget“C”(列表0.25 25.0)(列表ptx 26.0))“”)
 
再次感谢,这是我正在编辑的文件的图片。需要变量输入的原因是根据剪切文件的尺寸改变删除的行选择。

Bhanson 发表于 2022-7-6 10:52:31

下面是使用完成的完整代码。擦除和。拉伸命令短而有效!
 
(setq len 101.25)
(setq宽度73.25)
;(setq len(getdist“输入封面长度:”);覆盖长度用户输入(测试时省略)
;(setq宽度(getdist“输入封面宽度:”);覆盖宽度用户输入(测试时省略)
 
; 删除所选内容
(setq ptx(-len 0.25))
(命令“.erase”(ssget“C”(列表0.25 25.0)(列表ptx 26.0))“”)
 
; 拉伸选择
(setq pty(-宽度10.0))
(setq SX(rtos 0.5)SY(rtos 0.0));这将设置选择将被拉伸的距离
(命令“.stretch”(ssget“_C”(列表0.6 10.0)(列表5.0 pty))“0,0”(strcat SX”,“SY))
; 如您所见,从(0.6,10.0)到(5.0(宽度-10))的交叉窗口选择使用代码的(strcat SX”,“SY)部分在x方向上拉伸从点(0,0)到(0.5,0,0)的距离。
(普林斯)
 
再次感谢!

CALCAD 发表于 2022-7-6 11:06:34

我忘了我把擦除切换到删除。在我的Intellicad上,DELETE是命令名,ERASE是别名。不管怎样,你解决了。我很高兴它对你有用。
页: [1]
查看完整版本: 有没有办法使用variab