明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1073|回复: 1

3D线改2D线程序源代码,谁给做个2D线改3D的

[复制链接]
发表于 2006-11-2 16:14 | 显示全部楼层 |阅读模式
本帖最后由 作者 于 2006-11-3 10:16:28 编辑

好多人在找的!我给提供个源代码! 3T2

谁给做个2D线改3D的?

(defun 3DLIST(ENTNAME LORPL)
    (setq cbiao nil)
    (if (/= LORPL "LINE")
        (PROGN
            (SETQ BIA (ENTGET ENTNAME))
            (WHILE (/= LORPL "SEQEND")
                   (SETQ ENTNAME (ENTNEXT ENTNAME))
                   (SETQ BIA (ENTGET ENTNAME))
                   (SETQ LORPL (CDR (ASSOC 0 BIA)))
                   (if (/= LORPL "SEQEND")
                       (SETQ CBIAO (CONS (CDR (ASSOC 10 BIA)) CBIAO))
                   );if
            );while
        );progn
        (progn
            (SETQ BIA (ENTGET ENTNAME))
            (SETQ CBIAO (CONS (CDR (ASSOC 11 BIA)) CBIAO))
            (SETQ CBIAO (CONS (CDR (ASSOC 10 BIA)) CBIAO))
        );progn
   );if
);end
;=============================================================================
;数表处理
(defun sbcl21()
         (progn
              (setq newlib nil)
              (setq mm2 0)
              (setq ll2 (length cbiao))
              (while (< mm2 ll2)
                     (progn
                         (setq gczjq1 (nth mm2 cbiao))
                         ;(setq jq (list (car gczjq1) (cadr gczjq1) 0))
                         (setq jq gczjq1)
                     );progn
                     (setq newlib (cons jq newlib))
                     (setq mm2 (+ mm2 1))
              );while
              (setq newlib (reverse newlib))
             (progn
                  (command "layer" "s" entlay "")
                  (setq kk 0)
                  (setq kk1 (length newlib))
                  (command "pline")
                  (repeat kk1
                        (command (nth kk newlib))
                        (setq kk (+ kk 1))
                  );repeat
                  (command)
                  (command "erase" entname1 "")
                  (command "redraw")
       );progn
     );progn
);end
;===============================================================================
;选线处理数据
(defun xzxpcl21()
       (setq sss nil)
       (setq ss2 (ssget))
       (if (/= ss2 nil)           (progn
                (setq sss ss2)
           );progn
           (progn
                (princ "\n没有选线!")
                (princ)
           );progn
       );if
);end
;===============================================================================
;选全图线处理数据
(defun xzqtpcl21()
       (setq sss nil)
       (setq ss3 (ssget "X"))
       (if (/= ss3 nil)
           (progn
                (setq sss ss3)
           );progn
           (progn
                (princ "\n图是空的!")
                (princ)
           );progn
       );if
);end
;===============================================================================
;按层处理数据
(defun xzcpcl21()
     (setq sss nil)
     (setq layname (getstring "\n请输入要处理的三维线所在层名:"))
     (if (/= layname nil)
         (progn
             (if (tblsearch "layer" layname)
                 (progn
                     (setq ss1 (ssget "X" (list (cons 8 layname))))
                     (if (/= ss1 nil)
                         (progn
                             (setq sss ss1)
                         );progn
                         (progn
                              (princ "\n本图中 ")
                              (princ layname)
                              (princ " 层无要素!")
                              (princ)
                         );progn
                     );if
                 );progn
                 (progn
                     (princ "\n本图中 ")
                     (princ layname)
                     (princ " 层不存在!")
                     (princ)
                 );progn
             );if
         );progn
         (progn
             (princ "\n没有输入层名!")
             (princ)
          );progn
    );if
);end
;===============================================================================
(defun c:3t2()
        (progn
           (progn
                (initget "1 2 3")
                (princ "\n选择三维线改二维线方式:")
                (setq key (getkword "\n1选线\\2输入层\\3全图线\\<回车为输入层>:"))
                (cond ((not key) (xzcpcl21))    ;选择层批处理
                      ((= key "1") (xzxpcl21))  ;选择线批处理
                      ((= key "2") (xzcpcl21))  ;选择层批处理
                      ((= key "3") (xzqtpcl21)) ;选择全图批处理
                );cond
          );progn
          (if (/= sss nil)
              (progn
                  (progn
                      (princ "\n正在处理数据,请稍等...")
                      (princ)
                  );progn
                  (setq mm1 0)
                  (setq ll1 (sslength sss))
                  (while (< mm1 ll1)
                         (setq entname1 (ssname sss mm1))
                         (setq entsj1 (entget entname1))
                         (setq entlx1 (cdr (assoc 0 entsj1)))
                         (setq entlay (cdr (assoc 8 entsj1)))
                         (if (or (= entlx1 "LINE") (= entlx1 "POLYLINE"))
                             (progn
                                 (3dlist entname1 entlx1)  ;获得表数据
                                 (sbcl21)  ;构造表数据处理
                             );progn
                             (progn
                                  (princ)
                             );progn
                         );if
                         (setq mm1 (+ mm1 1))
                  );while
                  (progn
                       (princ "\n共处理 ")
                       (princ ll1)
                       (princ " 条数据.")
                       (princ)
                  );progn
              );progn
              (progn
                   (princ "\n没有选择线或层中无数据!")
                   (princ)
              );progn
          );if
        );progn
);end
;===============================================================================

发表于 2006-11-2 17:10 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-6-3 10:13 , Processed in 0.179768 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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