文档库 最新最全的文档下载
当前位置:文档库 › cad 三维 立体 图 自动生成 二维 三视图 插件

cad 三维 立体 图 自动生成 二维 三视图 插件

(DEFUN c:sa()
(setq dcl_id (load_dialog "sanshi"))
(new_dialog "sanshi" dcl_id)
(action_tile "sansh_cf1" "(done_dialog 1)")
(action_tile "sansh_cf2" "(done_dialog 2)")
(action_tile "sansh_cf3" "(done_dialog 3)")
(action_tile "sansh_cf4" "(done_dialog 4)")
(action_tile "sansh_zds" "(done_dialog 5)")

(setq sansh_done_id (start_dialog))
(if (> sansh_done_id 0)
(progn
(cond ((= 1 sansh_done_id)
(sanshm_cf1)
)
((= 2 sansh_done_id)
(sanshm_cf2)
)
((= 3 sansh_done_id)
(sanshm_cf3)
)
((= 4 sansh_done_id)
(sanshm_cf4)
)
((= 5 sansh_done_id)
(sanshm_zds)
)
)

)
)

(princ)
)

;;




;;;--------------------------------------------------------
;;;函数: CF1
;;;--------------------------------------------------------
;;;编制日期:2009.03.27
;;;修改日期:2011.07.28
;;;编制者 :曾敏辉
;;;说明:本函数将复制并旋转对象为右视
;;;--------------------------------------------------------
(DEFUN sanshm_CF1( / en entgrp oldort pt1 pt2 ss)
(PRINC "\n 复制并旋转对象为右视")
(setvar "cmdecho" 0)
(setq oldort (getvar "orthomode"))
(princ "\n 请选择主视图对象:")
(SETQ ENTGRP (SSGET))
(princ "\n 请选择主视图的基准点:")
(setvar "orthomode" 1)
(SETQ pt1 (GETPOINT))
(princ "\n请选择右视图的基准点(按左键接受并绘制右视图):")
(SETQ pt2 (GETPOINT))
(setq en (entlast))
(COMMAND "copy" ENTGRP "" pt1 pause)
(setq ss (lt:ss-entnext en))
(princ "\n正在绘制右视图......")
(command "rotate3d" ss "" "Y" pt2 "-90");;;绘制右视图
(princ "\n绘制右视图完毕!")
(princ)
)


;;;--------------------------------------------------------
;;;函数: CF2
;;;--------------------------------------------------------
;;;编制日期:2009.03.27
;;;修改日期:2011.07.28
;;;编制者 :曾敏辉
;;;说明:本函数将复制并旋转对象为仰视
;;;--------------------------------------------------------
(DEFUN sanshm_CF2( / en entgrp oldort pt1 pt2 ss)
(setvar "cmdecho" 0)
(PRINC "\n 复制并旋转对象为仰视")
(setq oldort (getvar "orthomode"))
(princ "\n 请选择主视图对象:")
(SETQ ENTGRP (SSGET))
(princ "\n 请选择主视图的基准点:")
(setvar "orthomode" 1)
(SETQ pt1 (GETPOINT))
(princ "\n请选择仰视图的基准点(按左键接受并绘制仰视图):")
(SETQ pt2 (GETPOINT))
(setq en (entlast))
(COMMAND "copy" ENTGRP "" pt1 pause)
(setq ss (lt:ss-entnext en))
(princ "\n正在绘制仰视图......")
(command "rotate3d" ss "" "X" pt2 "-90");;;绘制仰视图
(princ "\n绘制仰视图完毕!")
(princ)
)

;;;函数: CF3
;;;--------------------------------------------------------
;;;编制日期:2009

.03.27
;;;修改日期:2011.07.28
;;;编制者 :曾敏辉
;;;说明:本函数将复制并旋转对象为左视
;;;--------------------------------------------------------
(DEFUN sanshm_CF3( / en entgrp oldort pt1 pt2 ss)
(setvar "cmdecho" 0)
(PRINC "\n 复制并旋转对象为左视")
(setq oldort (getvar "orthomode"))
(princ "\n 请选择主视图对象:")
(SETQ ENTGRP (SSGET))
(princ "\n 请选择主视图的基准点:")
(setvar "orthomode" 1)
(SETQ pt1 (GETPOINT))
(princ "\n请选择左视图的基准点(按左键接受并绘制左视图):")
(SETQ pt2 (GETPOINT))
(setq en (entlast))
(COMMAND "copy" ENTGRP "" pt1 pause)
(setq ss (lt:ss-entnext en))
(princ "\n正在绘制左视图......")
(command "rotate3d" ss "" "Y" pt2 "90");;;绘制左视图
(princ "\n绘制左视图完毕!")
(princ)
)

;;;--------------------------------------------------------
;;;函数: CF4
;;;--------------------------------------------------------
;;;编制日期:2009.03.27
;;;修改日期:2011.07.28
;;;编制者 :曾敏辉
;;;说明:本函数将复制并旋转对象为俯视
;;;--------------------------------------------------------
(DEFUN sanshm_CF4( / en entgrp oldort pt1 pt2 ss)
(setvar "cmdecho" 0)
(PRINC "\n 复制并旋转对象为俯视")
(setq oldort (getvar "orthomode"))
(princ "\n 请选择主视图对象:")
(SETQ ENTGRP (SSGET))
(princ "\n 请选择主视图的基准点:")
(setvar "orthomode" 1)
(SETQ pt1 (GETPOINT))
(princ "\n请选择俯视图的基准点(按左键接受并绘制俯视图):")
(SETQ pt2 (GETPOINT))
(setq en (entlast))
(COMMAND "copy" ENTGRP "" pt1 pause)
(setq ss (lt:ss-entnext en))
(princ "\n正在绘制俯视图......")
(command "rotate3d" ss "" "X" pt2 "90");;;绘制俯视图
(princ "\n绘制俯视图完毕!")
(princ)
)
;;; --------------------------------------------------------
;;; 函数: ZDS
;;; --------------------------------------------------------
;;; 编制日期:2008.11.20
;;; 修改日期:2010.04.29修改实体颜色为0层和hidden层
;;; 修改日期:2011.07.28 增加程序运行前的备注和功能
;;; 编制者 :曾敏辉
;;; 说明: 将已绘制好的三维图自动投影生成三视图
;;; --------------------------------------------------------
(defun sanshm_zds ( / l old_lay ss1 ss2 ss3 ss4 ssg1)
(SETVAR "CMDECHO" 0)
(princ "\n 请选择生成投影图的组合(它将删除所选择的3D实体,请注意保存3D实体):")
(setq ssg1 (ssget));;生成布局选项
(command "layout" "s" "")
(princ "\n 投影图正在生成中,请稍候......")
(command "mspace")
(command "_solprof" ssg1 "" "Y" "Y" "N")
(princ "\n 投影图已生成")
(command "model")
(command "erase" ssg1 "")
(COMMAND "EXPLODE" l)
(setq ss1 (ssget "X" '((8 . "PH-*"))))
(COMMAND "EXPLODE" SS1)
(setq ss2 (ssget "X" '((8 . "PH-*"))))
(setq ss3 (ssget "X" '((8 . "PV-*"))))
(CO

MMAND "EXPLODE" SS3)
(setq ss4 (ssget "X" '((8 . "PV-*"))))
(setq old_lay (getvar "clayer"))
(if (=(tblobjname "LAYER" "hidden") nil)
(progn
(command "layer" "m" "hidden" "c" "blue" "" "l" "dashed" "" "")
)
)
(setvar "clayer" old_lay)



(command "CHANGE" ss2 "" "P" "LA" "hidden" "")
(command "CHANGE" ss4 "" "P" "LA" "0" "")


;;;(command "CHANGE" ss2 "" "P" "LA" "hidden" "")
;;;(command "CHANGE" ss4 "" "P" "LA" "0" "")
;;;(command "_.purge" "_all" "*" "n")
;;;(command "_.qsave" )
(princ)
);;; _ 结束defun



;;____________________________________________
;; ▓ (lt:ss-entnext en)
;; [功能] 获取在图元 en 之后产生的图元的选择集
;; [参数] en----图元名
;; [返回] 选择集
;; [测试]1.(setq en (entlast))
;; 执行创建图元的命令,如 LINE,BOUNDARY
;; (setq ss (lt:ss-entnext en))
;; 2.(setq ss (lt:ss-entnext (car(entsel))))
(defun lt:ss-entnext (en / ss)
(if en
(progn
(setq ss (ssadd))
(while (setq en (entnext en))
(if (not (member (cdr (assoc 0 (entget en)))
'("ATTRIB" "VERTEX" "SEQEND")
)
)
(ssadd en ss)
)
)
(if (zerop (sslength ss)) (setq ss nil))
ss
)
(ssget "_x")
)
)




相关文档
相关文档 最新文档