CAD自动生成45°视图

四五设计网小助手 CAD评论阅读模式

画管路图时,常画俯视图和相应的45°角视图。其实45°角视图中包含的信息只比俯视图中多了每根管路的水平高度。下面这个用LISP编写的程序可以自动将俯视图转化为同一水平高度的45°角视图,使用者只需在转化后的图上将每组管路在竖直方向上移动相应的高度,一幅45°角视图就轻松完成了。

由于每根管路用一直线表示,所以只需改变直线的起点和终点坐标为相应的45°角视图中的坐标。程序中变量p0记录45°角视图的坐标原点,由用户输入。p1记录直线的起点坐标,p2记录直线的终点坐标。文章源自四五设计网-https://www.45te.com/2316.html

(defun c:V45( / cmdmode sset ssl ent p0,p1,p2,x1,x2,y0,y1,y2,z1,z2)文章源自四五设计网-https://www.45te.com/2316.html

(setq cmdmode (getvar "cmdecho"))文章源自四五设计网-https://www.45te.com/2316.html

(setvar "cmdecho" 0)文章源自四五设计网-https://www.45te.com/2316.html

;select lines by user文章源自四五设计网-https://www.45te.com/2316.html

PRompt "nSelect lines:")文章源自四五设计网-https://www.45te.com/2316.html

(setq sset (ssget))文章源自四五设计网-https://www.45te.com/2316.html

(if (not(null sset))文章源自四五设计网-https://www.45te.com/2316.html

(progn文章源自四五设计网-https://www.45te.com/2316.html

(setq ssl (sslength sset))文章源自四五设计网-https://www.45te.com/2316.html

;input base point by user文章源自四五设计网-https://www.45te.com/2316.html

(setq p0 (getpoint "nThe base point: "))文章源自四五设计网-https://www.45te.com/2316.html

(setq y0 (CADr p0))文章源自四五设计网-https://www.45te.com/2316.html

(while (> ssl 0)文章源自四五设计网-https://www.45te.com/2316.html

(setq ent(entget (ssname sset (setq ssl (1- ssl)))))文章源自四五设计网-https://www.45te.com/2316.html

;filter the lines文章源自四五设计网-https://www.45te.com/2316.html

(if (= (cdr (assoc 0 ent)) "LINE")文章源自四五设计网-https://www.45te.com/2316.html

;change the start point and end point of the line文章源自四五设计网-https://www.45te.com/2316.html

(progn文章源自四五设计网-https://www.45te.com/2316.html

(setq x1 (cadr(assoc 10 ent)))文章源自四五设计网-https://www.45te.com/2316.html

(setq y1 (caddr(assoc 10 ent)))

(setq z1 (cadddr(assoc 10 ent)))

(setq x2 (cadr(assoc 11 ent)))

(setq y2 (caddr(assoc 11 ent)))

(setq z2 (cadddr(assoc 11 ent)))

(setq p1 (list (+ x1 (/ (* (sqrt 2) (- y1 y0)) 4)) (+ y0 (/ (* (sqrt 2) (- y1 y0))4)) z1))

(setq p2 (list (+ x2 (/ (* (sqrt 2) (- y2 y0)) 4)) (+ y0 (/ (* (sqrt 2) (- y2 y0))4)) z2))

(setq ent (entmod (subst (cons 10 p1)

(assoc 10 ent) ent)))

(entmod (subst (cons 11 p2)

(assoc 11 ent) ent))

(redraw (cdr(assoc -1 ent)) 1))

(setvar "CMDECHO" cmdmode)

(princ "ntc:V45 loaded. Start command with V45.")

继续阅读
  • 我的微信
  • 微信扫一扫
  • weinxin
  • 惠生活福利社
  • 微信扫一扫
  • weinxin
四五设计网小助手
  • 本文由 发表于 2022年3月15日 16:07:47
  • 转载请务必保留本文链接:https://www.45te.com/2316.html
评论  0  访客  0

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: