大家好,我发现了另一个问题,我觉得我处理起来有点力不从心。我的雇主在他们的电脑上使用Draftsight,但我在我的个人笔记本电脑上写下了我的代码,我有Autocad(学生许可证)。我使用visual studio代码插件快速调试。
问题是Draftsight和Autocad在lisp解析方面有很多不同,我觉得理解它们需要对计算机科学有我所没有的理解。
无论如何,我目前的问题是,我们使用一个命令来为在数控机床上切割的工件添加偏移量。命令需要:
-忽略“cabinet”层
-偏移到所有边缘外侧3/16“
-将最后一行放在“CNC”层
在Autocad中,这很好:
- (defun c:cnc ( / p b l )
- (setq b (sl:boundary))
- (command "offset" "3/16" b '(0.0 0.0 0.0)"")
- (vl-cmdf "erase" b "")
- )
-
- (defun sl:boundary ( / p g n e)
- (setq g 0
- e (cdr(assoc -1(entget (entlast))))
- l (getvar 'clayer)
- )
- (while (= g 0)
- (setq p (getpoint "Select center of object"))
- (vl-cmdf "_.-layer" "freeze" "cabinet" "set" "cnc" "")
- (vl-cmdf "boundary" "a" "i" "n" "+x" "" p "")
- (vl-cmdf "_.-layer" "thaw" "cabinet" "set" l "")
- (setq n (cdr(assoc -1(entget(entlast)))))
- (cond ((not(equal e n ))(setq g 1)))
- )
- n
- )
我向点偏移'(0.00.00.0),因为该点永远不会在其中一个形状内),
在Draftsight中,此命令总是按偏移工具使用的最后一个距离偏移“边界”线,而不是3/16“。我唯一能防止这种情况发生的方法是接管放置步骤。
- ...
- (command "offset" "3/16" entity pause)
- ...
然而,这严重限制了该工具的效率和缩放能力(我想在将来的某个时候制作一个版本,它可以为带有“cnc”标签的所有形状实现这一点,但让它工作起来似乎是重要的第一步)。
我很高兴能用ActiveX解决这个问题,但Draftsight缺少了很多这样的语句。
此外,我注意到在尝试修复这个问题时,我完全破坏了该工具的功能,让用户在丢失闭合形状后重试,所以这也太糟糕了。
|