明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 6916|回复: 18

[讨论] 图框文件名称自动填写

  [复制链接]
发表于 2010-12-5 17:42:56 | 显示全部楼层 |阅读模式
本帖最后由 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       [A3图框]^C^Cl0001a insert "a3.dwg" \;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;l0001b
;;;ID_fj0001b       [<-A4图框]^C^Cl0001a insert "a4.dwg" \;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;l0001b
(defun c:l0001b()
  (command "layer" "s" mylayer "")
)

本帖子中包含更多资源

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

x
 楼主| 发表于 2010-12-8 18:04:20 | 显示全部楼层
回复 linshiyin2 的帖子

我觉得你的方法是可取的!只有你明白了我的意思!
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2010-12-5 17:45:33 | 显示全部楼层
本帖最后由 yutianweidi 于 2010-12-8 18:23 编辑

希望高手指教!
1.以上LSP里面的绘图名称指定为“彭泽胜”,图框插入的时候,可以自动提取;
2.日期我则用插入字段,可以自动提起,也可以再“彭泽胜”加入“DATE”同样自动获取;但是我部知道,自动提取文件名的部分字符怎么办
command "insert"  "a3.dwg" pt0 "x" acx "" "" "" "" "" "" "" "" "彭泽胜" "" "" "" "" "" "" "" "" "" "" "" "" "")

本帖子中包含更多资源

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

x
发表于 2010-12-5 19:25:25 | 显示全部楼层
没懂你的意思,你产品名称和项目每次都要改变的,这个怎么自动填写?每次还不是要修改,那这个程序的意义就不大了吧?不如做个块,每次插入后,更改就好了
发表于 2010-12-5 19:50:50 | 显示全部楼层
将图框做成块,需要填写的内容改为属性,插入图框块时直接修改块属性即可!
发表于 2010-12-5 22:24:52 | 显示全部楼层
图的版本是21呀
发表于 2010-12-7 08:27:31 | 显示全部楼层
这个功能了,你可以考虑插入时读取一个文件,里面设置公司编码,版次,名称等,然后用command text命令插入各个文字就可以了
发表于 2010-12-8 11:05:50 | 显示全部楼层
Gu_xl 发表于 2010-12-5 19:50
将图框做成块,需要填写的内容改为属性,插入图框块时直接修改块属性即可!

我同意楼上的说法
 楼主| 发表于 2010-12-8 18:03:20 | 显示全部楼层
我需要全自动呀!
 楼主| 发表于 2010-12-8 18:03:42 | 显示全部楼层
自动关联外部文件名称
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-24 01:13 , Processed in 0.294029 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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