明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2520|回复: 4

变更PRO/E转出DWG图档的图层,但转换速度太慢,看大家有没有什么办法

[复制链接]
发表于 2009-9-6 11:07 | 显示全部楼层 |阅读模式

变更PRO/E转出DWG图档的图层,但程式转换速度太慢,看大家有没有什么办法可以提高一下运算速度.我是在2007 环境下使用.

;;;   p-e.lsp
;;;--- 变更PRO/E图层,不能对图块转换.<commnad: p-e> ---
;;;*******************************************
(DEFUN new_lay (lay coL lt / chk_lay)
  (setq chk_lay (tblsearch "layer" lay))
  (if (= chk_lay nil)
    (command "layer" "new" lay "c" coL lay "lt" lt lay "")
  )
)
;;;*******************************************
(DEFUN CH_LAY (ob lay)
  (command "Change" ob "" "p" "c" "bylayer" "LT" "bylayer" "la" lay "")
)
;;;*******************************************

(DEFUN c:p-e(/ c_lay obj n en type0 type62 type6 hat p40 cen hid pha sec dim cl)
  ;(%%time)
  (setvar "cmdecho" 0)
  (setq c_lay (getvar "clayer"))
;;; ------------  新建proe图层 -----------------------------
      (setq hat "剖面线层")
      (setq p40 "proe-40")
      (setq cen "中心线层")
      (setq hid "短虚线层")
      (setq pha "proe-PHA")
      (setq SEC "proe-sec")
      (setq dim "尺寸线层")
      (setq cl  "0")

      (new_lay hat 40  "Continuous")
      (new_lay p40 130 "phantom")
      (new_lay cen 1   "center")
      (new_lay hid 200 "hidden")
      (new_lay pha 140 "phantom")
      (new_lay SEC 150 "phantom")
      (new_lay dim 4   "Continuous")
;;;;****************************************
  (prompt "\n 请指定转换PRO/E图层的范围")
  (setq obj (ssget))
  (if (/= obj nil)
    (progn

;;; ------------- 循环判断并更改proe图层 -------------

      (setq n 0)
      (prompt "\n正在转换PRO/E的图层,可能需要几秒到几分钟,在计算过程中请等待......\n")
      (repeat (sslength obj)
 (setq en (ssname obj n))
 (setq type0 (cdr (assoc 0 (entget en))))
 (setq type62 (cdr (assoc 62 (entget en))))
 (setq type6 (cdr (assoc 6 (entget en))))
 ;(setq type8 (cdr (assoc 8 (entget en))))

;;; ------------ 判断并更改到 0 图层 -------------
 (if (= type62 7)
   (CH_LAY en cl)
 )

;;; ------------ 判断并更改到PROE-HAT图层 -------------
 (if
   (and (and (= type0 "LINE") (= type62 2))
        (= type6 "Continuous")
   )
    (CH_LAY en hat)
 )
;;;------------ 判断并更改到PROE-40图层 ---------------
 (if (= type62 40)
   (CH_LAY en p40)
 )
;;;------------ 判断并更改到PROE-cen图层 --------------
 (if (and (= type6 "CENTER") (= type62 2))
   (CH_LAY en cen)
 )
;;;------------ 判断并更改到短虚线层图层 --------------
 (if (or (or (= type6 "HIDDEN") (= type62 8))
  (and (= type6 "HIDDEN") (= type62 7))
     )
   (CH_LAY en hid)
 )
;;;------------ 判断并更改到PROE-pha图层 ----------------
 (if (= type6 "PHANTOM")
   (CH_LAY en pha)
 )
;;;------------ 判断并更改到PROE-sec图层 --------------
 (if (and (= type6 "CENTER") (= type62 9))
   (CH_LAY en sec)
 )
;;;------------ 判断并更改到PROE-dim图层 --------------
 (if (= type0 "DIMENSION")
   (progn
     (CH_LAY en dim)
     (command "dimstyle" "apply" en "")
   )
 )
;;;------------ one end ------------------------------- 
 (setq n (1+ n))
      )
      (print "恭喜你已完成改变PRO/E图层")
      (print)
    )
  )
(setvar "clayer" c_lay)
  (princ)
)

发表于 2009-9-6 13:05 | 显示全部楼层
慢的的原因有可能是command用的多
发表于 2009-9-6 21:37 | 显示全部楼层
看了楼主的程序,主要是循环中执行command造成的。下面是改写的程序:
要想程序快,就要少用变量,少调用子程序。因为从变量中取数和调用子程序都要消耗时间,虽然现在计算机速度快了,可以忽略不计,但架不住积少成多。
游客,本帖隐藏的内容需要发帖数高于 5 才可浏览,你当前发帖数只有 0

 楼主| 发表于 2009-9-7 22:29 | 显示全部楼层
感谢 ZZXXQQ 的指正,现在速度提高非常多,但对于选择有几万图元的集还是不行,但速度已经比以前好很多了。我再试一下用"entmod"看会不会更快。
发表于 2024-2-19 15:54 | 显示全部楼层
最近在弄一个图层转换工具,前来学习,
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-6-18 19:54 , Processed in 0.156226 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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