图框文件名称自动填写
本帖最后由 yutianweidi 于 2010-12-8 18:15 编辑1.以下是我在CAD中插入图框的LSP语言!直接复制保存为文本,更改文件后缀为.LSP,拖入CAD即可使用!
2.我将我图框模板上传(附件A3.DWG)
(defun c:l0001a3()
(setq datea (rtos (getvar "cdate")2 0))
(setq date (strcat (substr datea 5 2) "/" (substr datea 7 2) "/" (substr datea 1 4)))
(setq drawname (getvar "loginname"))
(setq mylayer (getvar "clayer"))
(setq layname1 (substr mylayer 1 2))
(setq layname2 (strcat layname1 "0"))
(if(setq ed1 (tblsearch "LAYER" layname2))
(progn
(setq ed2 (cdr (assoc 70 ed1)))
(cond
((= ed2 0)(command "layer" "on" layname2 ""))
((= ed2 1)(command "layer" "t" layname2 "on" layname2 ""))
((= ed2 4)(command "layer" "u" layname2 "on" layname2 ""))
((= ed2 5)(progn (command "layer" "t"str3 "u" layname2 "on" layname2 "")))
)
)
(setq layname2 "0")
)
(command "layer" "s" layname2 "")
(setq pt1 (getpoint "请输入图框左下角点:\n"))
(setq pt2 (getcorner pt1 "请输入图框右上角点:\n"))
(setq disx (abs (- (car pt1) (car pt2))))
(setq disy (abs (- (cadr pt1) (cadr pt2))))
(setq acx(/ disx 385.00))
(setq acy(/ disy 232.00))
(if (> acy acx)
(setq acx acy)
)
(setq acx (*(fix (+ (* acx 10) 0.9999)) 0.1))
(setq pt0 (list (/ (+ (car pt1 ) (car pt2) (* (- 0 8) acx)) 2.00)
(/ (+ (cadr pt1) (cadr pt2) (* (- 0 23.6) acx)) 2.00)))
(setq os (getvar "osmode"))
(setvar "osmode" 0)
(setq dwgno (strcase (substr(getvar "dwgname") 1 9 )))
(command "insert""a3.dwg" pt0 "x" acx "" "" "" "" "" "" "" "" "彭泽胜" "" "" "" "" "" "" "" "" "" "" "" "" "")
(setvar "osmode" os)
;(c:l0001b)
)
(defun c:l0001a4()
(setq datea (rtos (getvar "cdate")2 0))
(setq date (strcat (substr datea 5 2) "/" (substr datea 7 2) "/" (substr datea 1 4)))
(setq drawname (getvar "loginname"))
(setq mylayer (getvar "clayer"))
(setq layname1 (substr mylayer 1 2))
(setq layname2 (strcat layname1 "0"))
(if(setq ed1 (tblsearch "LAYER" layname2))
(progn
(setq ed2 (cdr (assoc 70 ed1)))
(cond
((= ed2 0)(command "layer" "on" layname2 ""))
((= ed2 1)(command "layer" "t" layname2 "on" layname2 ""))
((= ed2 4)(command "layer" "u" layname2 "on" layname2 ""))
((= ed2 5)(progn (command "layer" "t"str3 "u" layname2 "on" layname2 "")))
)
)
(setq layname2 "0")
)
(command "layer" "s" layname2 "")
(setq pt1 (getpoint "请输入图框左下角点:\n"))
(setq pt2 (getcorner pt1 "请输入图框右上角点:\n"))
(setq disx (abs (- (car pt1) (car pt2))))
(setq disy (abs (- (cadr pt1) (cadr pt2))))
(setq acx(/ disx 176.00))
(setq acy(/ disy 230.00))
(if (> acy acx)
(setq acx acy)
)
(setq acx (*(fix (+ (* acx 10) 0.9999)) 0.1))
(setq pt0 (list (/ (+ (car pt1 ) (car pt2) (* (- 0 8) acx)) 2.00)
(/ (+ (cadr pt1) (cadr pt2) (* (- 0 23.6) acx)) 2.00)))
(setq os (getvar "osmode"))
(setvar "osmode" 0)
(setq dwgno (strcase (substr(getvar "dwgname") 1 9 )))
(command "insert""a4.dwg" pt0 "x" acx "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "")
(setvar "osmode" os)
; (c:l0001b)
)
;;;ID_fj0001a ^C^Cl0001a insert "a3.dwg" \;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;l0001b
;;;ID_fj0001b [<-A4图框]^C^Cl0001a insert "a4.dwg" \;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;l0001b
(defun c:l0001b()
(command "layer" "s" mylayer "")
)
回复 linshiyin2 的帖子
我觉得你的方法是可取的!只有你明白了我的意思! 本帖最后由 yutianweidi 于 2010-12-8 18:23 编辑
希望高手指教!
1.以上LSP里面的绘图名称指定为“彭泽胜”,图框插入的时候,可以自动提取;
2.日期我则用插入字段,可以自动提起,也可以再“彭泽胜”加入“DATE”同样自动获取;但是我部知道,自动提取文件名的部分字符怎么办
command "insert""a3.dwg" pt0 "x" acx "" "" "" "" "" "" "" "" "彭泽胜" "" "" "" "" "" "" "" "" "" "" "" "" "")
没懂你的意思,你产品名称和项目每次都要改变的,这个怎么自动填写?每次还不是要修改,那这个程序的意义就不大了吧?不如做个块,每次插入后,更改就好了 将图框做成块,需要填写的内容改为属性,插入图框块时直接修改块属性即可! 图的版本是21呀 这个功能了,你可以考虑插入时读取一个文件,里面设置公司编码,版次,名称等,然后用command text命令插入各个文字就可以了 Gu_xl 发表于 2010-12-5 19:50 static/image/common/back.gif
将图框做成块,需要填写的内容改为属性,插入图框块时直接修改块属性即可!
我同意楼上的说法 我需要全自动呀! 自动关联外部文件名称
页:
[1]
2