明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1919|回复: 7

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

[复制链接]
发表于 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)
  )
想把标注挪动到指定的图层,当指定的图层不存在时又是怎么处理的呢??
发表于 2014-7-18 07:59:19 | 显示全部楼层
如果用ENTMAKE建立物体,可以不管图层是否存在。也可以在不存在时就建立。
发表于 2014-7-18 08:01:15 | 显示全部楼层
指定的图层不存在 先Make Layer

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

点评

非常感谢  发表于 2014-7-19 00:13
发表于 2014-7-18 08:26:04 | 显示全部楼层
;;先设定图层
  1. (defun c:tt ()
  2.   (defun mkLa (la)
  3.     (if (= (tblsearch "layer" la) nil)
  4.       (Command "-layer" "m" la "")
  5.       (Command "-layer" "t" la "")
  6.     )
  7.     (setvar "clayer" la)
  8.   )
  9.   (MkLa "0_MV")
  10.   (setq p1 (getpoint "第一点")
  11.         p2 (getpoint p1 "第二点")
  12.   )
  13.   (command "dimlinear" p1 p2 "t" "\\u+00848@200(2)")
  14.   (princ)
  15. )

点评

每次都尽心尽力的回答,很感谢!  发表于 2014-7-19 00:13
发表于 2014-7-18 15:39:04 | 显示全部楼层
  1. 我也遇到相同的问题,我的程序是与贱人工具箱里的图层自动切换命令有冲突,下面的lsp程序运行时必须把贱人工具箱里自动切换关闭掉才能达到我想要的结果,自动切换若开启时辅助标注就不能放置在“辅助层”中,请高手们指点一下吧(不知道用ENTMAKE能不能避开贱人工具箱的反应器问题)!
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2014-7-18 15:40:01 | 显示全部楼层
  1. (defun newer2(s)
  2.     (progn
  3.        (setq *error* older2)
  4.        (if oldlayer (setvar "clayer" oldlayer))
  5.        (if olddimstyle (command "dimstyle" "r" olddimstyle))
  6.     )
  7.    (princ)
  8. )
  9. (defun C:FB( / yss2 dimname2   )
  10. (progn
  11.     (setq older2 *error*)   ;保存原有*error*函数
  12.      (setvar "CMDECHO" 0)
  13.     (command "_.UNDO" "_BEGIN")
  14.     (setq oldlayer (getvar "clayer"));_记录当前图层
  15.     (setq olddimstyle (getvar "dimstyle"));_记录当前标注样式
  16.     (setq *error* newer2)
  17.          (if (not (tblsearch "layer" "辅助层")) ;;判断是否存在辅助层,无则创建
  18.            (command "layer" "m" "辅助层" "c" "8" "" "l" "continuous" "" "")
  19.          )
  20.   )
  21.   
  22. (if
  23.       (and (princ "\n选择标注样式 :") (setq yss2 (ssget ":S" '((0 . "DIMENSION")))));选择标注样式
  24. (progn
  25.     (setq dimname2 (cdr(assoc 3 (entget(ssname yss2  0)))));提取目标标注样式名称
  26.       (command "layer" "s" "辅助层" "");将辅助层置为当前,再标注
  27.       (command "dimstyle" "r" dimname2 );将目标标注样式置为当前
  28.     (command "dimaligned"); getpoint );开始标注,估计问题发生在这个getpoint上
  29.         ;(while (= (logand (getvar "CmdActive") 1) 1) (command pause))
  30.           (while (> (getvar "CMDACTIVE") 0) (command PAUSE))        
  31.            (while T  
  32.            (command "dimaligned");
  33.           (while (> (getvar "CMDACTIVE") 0) (command PAUSE))
  34.       )
  35. )
  36. )
  37.     (command "_.UNDO" "_END")
  38.   (command "dimstyle" "r" olddimstyle )
  39.     (setvar "clayer" oldlayer);_还原图层
  40.     (setq *error* older2)
  41.     (setvar "cmdecho" 1);_打开命令提示
  42.     (princ)
  43. )
 楼主| 发表于 2014-7-19 00:38:42 | 显示全部楼层
gcho 发表于 2014-7-18 15:40

(setq *error* older2)
(setq *error* newer2)
(command PAUSE))
(command "_.UNDO" "_BEGIN")   (command "_.UNDO" "_END")
这些语句是什么意思呢,我是新手不怎么不得懂呢,还有第一个函数newer2,是为了实现什么功能呢?谢谢
发表于 2014-7-19 07:52:58 | 显示全部楼层
gcho 发表于 2014-7-18 15:40
  1. (defun c:tt ()
  2.   (if (not (tblsearch "layer" "辅助层"))
  3.     (command "layer" "m" "辅助层" "c" "8" "" "l" "continuous" "" "")
  4.   )
  5.    (command "layer" "s" "辅助层" "")
  6.    (command "dimaligned" pause pause pause)
  7.    (princ)
  8. )
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-24 09:26 , Processed in 0.267704 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表