htlaser 发表于 2020-6-29 12:13:54

李青松 发表于 2020-6-29 11:57
我觉得是以下的这个程序要重新写,写成先选对象再运行程序。
(defun c:tcrb() (command "change" (ssget ...

(defun C:ttt (/ ss)
          (setvar "cmdecho" 0)
(if(= (tblsearch "layer" "软包") nil)(command "-layer" "n" "软包" "s" "软包" "")(command "-layer" "s" "软包" ""))
(setq ss (ssget "i"))
(if (= ss nil)
(c:tcrb)
(c:ff2))
       (princ))
(defun c:tcrb()
        (command "change" (ssget) "" "p"   "la" "软包" "c" "bylayer" "lt" "bylayer" "")        (princ))
(defun c:ff2 ()
        (setvar "CLAYER" "0") ;设置0层为当前图层
        (command"OSMODE" "4159" "ortho" "on" "line" )
        (princ)
)

htlaser 发表于 2020-6-29 12:14:18

本帖最后由 htlaser 于 2020-6-29 17:32 编辑

(defun C:ttt (/ ss)
    (setvar "cmdecho" 0)
(if(= (tblsearch "layer" "软包") nil)(command "-layer" "n" "软包" "s" "软包" "")(command "-layer" "s" "软包" ""))
(setq ss (ssget "i"))
(if (= ss nil)
(c:tcrb)
(c:ff2)) (setvar "CLAYER" "0");设置0层为当前图层
(princ))
(defun c:tcrb()
(command "change" (ssget) "" "p"   "la" "软包" "c" "bylayer" "lt" "bylayer" "")(princ))
(defun c:ff2 ()
(setvar "CLAYER" "0") ;设置0层为当前图层
(command"OSMODE" "4159" "ortho" "on" "line" )
(princ)
)

最新修改

李青松 发表于 2020-6-29 13:51:01

本帖最后由 李青松 于 2020-6-29 13:59 编辑

htlaser 发表于 2020-6-29 12:14
经测试,图层还是变了。运行完后当前的图层不是0层。

李青松 发表于 2020-7-1 13:59:21

htlaser 发表于 2020-6-29 12:14
最新修改

画直线的命令失效。

htlaser 发表于 2020-7-1 14:29:34

李青松 发表于 2020-7-1 13:59
画直线的命令失效。

请你自己找问题    201020122020都有测试没有问题最按后修改的代码
页: 1 [2]
查看完整版本: 组合命令f 在autocad2012中运行不了,2004,2005.2006中可以运行。