大家好,我希望在新的一年里你一切顺利。
虽然这两个例程都“起作用”,但在运行它们之后,我会出错。
我认为这可能是显而易见的,但对我来说显然并不明显。
我想我可能处理得不对。
版本#1:
- (defun c:PLO (/ cmde doc sset ent)
- (defun *error* (msg)
- (if (and msg
- (not (wcmatch (strcase msg t) "*break,*cancel*,*exit*"))
- )
- (princ (strcat "\nError: " msg))
- )
- (if cmde
- (setvar 'cmdecho cmde)
- )
- (if doc
- (vla-endundomark doc)
- )
- (princ)
- ) ;_ end of defun
-
- (setq doc (vla-get-activedocument (vlax-get-acad-object)))
- (vla-startundomark doc)
- (setq cmde (getvar 'cmdecho))
- (setvar 'cmdecho 0)
- (if (setq sset (ssget '((0 . "circle") (40 . 0.05))))
- (progn
- (foreach ent (mapcar 'cadr (ssnamex sset))
- (command "_.offset" "0.1" ent "0,0" "")
- ) ;_ end of foreach
- ) ;_ end of progn
- ) ;_ end of if
- (setvar 'cmdecho cmde)
- (vla-endundomark doc)
- (princ)
- ) ;_ end of defun
- (vl-load-com)
这会创建偏移量,但会出现错误“未知命令0,0”和“未知命令PLO”。就像它再次执行命令序列一样。
版本#2
- (defun c:PLO (/ cmde doc sset ent obj )
- (defun *error* (msg)
- (if (and msg
- (not (wcmatch (strcase msg t) "*break,*cancel*,*exit*"))
- )
- (princ (strcat "\nError: " msg))
- )
- (if cmde
- (setvar 'cmdecho cmde)
- )
- (if doc
- (vla-endundomark doc)
- )
- (princ)
- ) ;_ end of defun
- (setq doc (vla-get-activedocument (vlax-get-acad-object)))
- (vla-startundomark doc)
- (setq cmde (getvar 'cmdecho))
- (setvar 'cmdecho 0)
- (if (setq sset (ssget '((0 . "circle") (40 . 0.05))))
- (progn
- (foreach ent (mapcar 'cadr (ssnamex sset))
- (setq obj (vlax-ename->vla-object ent))
- (vla-Offset obj 0.1)
- ) ;_ end of foreach
- ) ;_ end of progn
- ) ;_ end of if
- (setvar 'cmdecho cmde)
- (vla-endundomark doc)
- (princ)
- ) ;_ end of defun
- (vl-load-com)
这会创建偏移量,但我得到“错误:错误的参数类型:lentyp(0(-3.41352 31.3948 0.0))”
任何帮助都将不胜感激。 |