broncos15 发表于 2022-7-5 18:51:54

ncopy的行为是否与其他命令不同?我已经试着将选择传递给它,但我无法让它正常工作。
(defun c:ncopy2 (/ *error* whilestop ent oldecho)
(defun *error* (msg)
   (if oldecho
   (setvar 'cmdecho oldecho)
   )
   (if (not
         (member msg '("Function cancelled" "quit / exit abort"))
       )
   (princ (strcat "\nError: " msg))
   )
   (princ)
)
(setq oldecho (getvar 'cmdecho))
(setvar 'cmdecho 0)
(setq whilestop t)
(while whilestop
   (setvar 'errno 0)
   (setq ent (entsel "\nSelect nested objects to copy: "))
   (cond
   ((= 52 (getvar 'errno))
      (setq whilestop nil)
   )
   ((null ent)
      (princ "\nYou missed. Try again.")
   )
   ((not (wcmatch (setq typ (cdr (assoc 0 (entget (car ent)))))
                  "INSERT"
         )
      )
      (princ "\nNot a valid object, try again.")
   )
   ;| ((/= (vla-get-IsXref (vlax-ename->vla-object (car ent))))
      (princ "\nNot a valid object, try again.")
   )|;
   (t
      (command "_.ncopy" ent "" "_non" '(0 0) "_non" '(0 0))
      (princ)
   )
   )
)
(setvar 'cmdecho oldecho)
(princ)
)

Lee Mac 发表于 2022-7-5 18:55:19

是的,NCOPY使用嵌套选择,类似于使用nentsel/nentselp获得的选择。

Hippe013 发表于 2022-7-5 18:58:55

我最近研究了一些代码,这些代码的工作方式类似于NCOPY,但会获取与使用objectDBX和外部参照的临时副本选择的嵌套对象相同层上的所有对象。我花了很多时间编写代码和测试。我成功地做到了这一点,尽管在继续测试、尝试覆盖所有可能的场景时,我得出了这样的结论:对于那些不了解代码在做什么的人来说,代码是危险的。尤其是涉及Civil 3D对象时,它可以复制从属对象和选定对象。我终于意识到最好还是放弃这个想法。我也不喜欢NCOPY的工作方式,想要一个更好的解决方案。我知道这可能对你的努力没有帮助,但请相信我,这可能是一个复杂的过程,结果可能不是最初想要的。
页: 1 [2]
查看完整版本: 完成NCOPY Co的LISP代码