bingshuier 发表于 2014-7-17 23:24:18

不知道怎么不能把创建的物体移动到制定的图层呢?

(defun c:b2()
(setq dimline_pt1 (getpoint "第一点")
      dimline_pt2 (getpoint dimline_pt1 "第二点")
        )
(command "dimlinear" dimline_pt1 dimline_pt2 "t" "\\u+00848@200(2)")
(abc)
(princ)
)

(defun abc()
(setq a1 (entget(entlast)))
(setq a2 (assoc 8 a1))
(setq a3 (cons 8 "0_MV"))
(setq a1 (subst a3 a2 a1))
(entmod a1)
(princ)
)
想把标注挪动到指定的图层,当指定的图层不存在时又是怎么处理的呢??

ZZXXQQ 发表于 2014-7-18 07:59:19

如果用ENTMAKE建立物体,可以不管图层是否存在。也可以在不存在时就建立。

Andyhon 发表于 2014-7-18 08:01:15

指定的图层不存在 先Make Layer

(setvar "Clayer" "DIM"); DIM or Waht...

xyp1964 发表于 2014-7-18 08:26:04

;;先设定图层(defun c:tt ()
(defun mkLa (la)
    (if (= (tblsearch "layer" la) nil)
      (Command "-layer" "m" la "")
      (Command "-layer" "t" la "")
    )
    (setvar "clayer" la)
)
(MkLa "0_MV")
(setq p1 (getpoint "第一点")
      p2 (getpoint p1 "第二点")
)
(command "dimlinear" p1 p2 "t" "\\u+00848@200(2)")
(princ)
)

gcho 发表于 2014-7-18 15:39:04

我也遇到相同的问题,我的程序是与贱人工具箱里的图层自动切换命令有冲突,下面的lsp程序运行时必须把贱人工具箱里自动切换关闭掉才能达到我想要的结果,自动切换若开启时辅助标注就不能放置在“辅助层”中,请高手们指点一下吧(不知道用ENTMAKE能不能避开贱人工具箱的反应器问题)!

gcho 发表于 2014-7-18 15:40:01

(defun newer2(s)
    (progn
       (setq *error* older2)
       (if oldlayer (setvar "clayer" oldlayer))
       (if olddimstyle (command "dimstyle" "r" olddimstyle))
    )
   (princ)
)
(defun C:FB( / yss2 dimname2   )
(progn
    (setq older2 *error*)   ;保存原有*error*函数
   (setvar "CMDECHO" 0)
    (command "_.UNDO" "_BEGIN")
    (setq oldlayer (getvar "clayer"));_记录当前图层
    (setq olddimstyle (getvar "dimstyle"));_记录当前标注样式
    (setq *error* newer2)
         (if (not (tblsearch "layer" "辅助层")) ;;判断是否存在辅助层,无则创建
         (command "layer" "m" "辅助层" "c" "8" "" "l" "continuous" "" "")
         )
)

(if
      (and (princ "\n选择标注样式 :") (setq yss2 (ssget ":S" '((0 . "DIMENSION")))));选择标注样式
(progn
    (setq dimname2 (cdr(assoc 3 (entget(ssname yss20)))));提取目标标注样式名称
      (command "layer" "s" "辅助层" "");将辅助层置为当前,再标注
      (command "dimstyle" "r" dimname2 );将目标标注样式置为当前
    (command "dimaligned"); getpoint );开始标注,估计问题发生在这个getpoint上
      ;(while (= (logand (getvar "CmdActive") 1) 1) (command pause))
          (while (> (getvar "CMDACTIVE") 0) (command PAUSE))      
         (while T
         (command "dimaligned");
          (while (> (getvar "CMDACTIVE") 0) (command PAUSE))
      )
)
)
    (command "_.UNDO" "_END")
(command "dimstyle" "r" olddimstyle )
    (setvar "clayer" oldlayer);_还原图层
    (setq *error* older2)
    (setvar "cmdecho" 1);_打开命令提示
    (princ)
)

bingshuier 发表于 2014-7-19 00:38:42

gcho 发表于 2014-7-18 15:40 static/image/common/back.gif


(setq *error* older2)
(setq *error* newer2)
(command PAUSE))
(command "_.UNDO" "_BEGIN")   (command "_.UNDO" "_END")
这些语句是什么意思呢,我是新手不怎么不得懂呢,还有第一个函数newer2,是为了实现什么功能呢?谢谢

xyp1964 发表于 2014-7-19 07:52:58

gcho 发表于 2014-7-18 15:40 static/image/common/back.gif


(defun c:tt ()
(if (not (tblsearch "layer" "辅助层"))
    (command "layer" "m" "辅助层" "c" "8" "" "l" "continuous" "" "")
)
   (command "layer" "s" "辅助层" "")
   (command "dimaligned" pause pause pause)
   (princ)
)
页: [1]
查看完整版本: 不知道怎么不能把创建的物体移动到制定的图层呢?