边界轮廓线lsp程序_第1页
边界轮廓线lsp程序_第2页
边界轮廓线lsp程序_第3页
边界轮廓线lsp程序_第4页
边界轮廓线lsp程序_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

;边界轮廓线(vl-load-com)(defun c:yad_outline(/ viewpt maxmin spl2arc ss_add os cor qa ss n pt1 pt2 l_pt dis ent m)(defun viewpt(/ a b c d x) (setq b (getvar viewsize) c (car (getvar screensize) d (cadr (getvar screensize) a (* b (/ c d) x (setq x (getvar viewctr) x (trans x 1 2) c (list (- (car x)(/ a 2.0) (- (cadr x) (/ b 2.0) 0.0) d (list (+ (car x) (/ a 2.0) (+ (cadr x) (/ b 2.0) 0.0) c (trans c 2 1) d (trans d 2 1) ) (list c d)(defun maxmin(lst / x n a b c d) (setq x (car lst) a (car x) b (cadr x) c (car x) d (cadr x) n 1) (repeat (max (- (length lst) 1) 0) (setq x (nth n lst) a (min a (car x) b (min b (cadr x) c (max c (car x) d (max d (cadr x) (setq n (1+ n) ) (list (list a b) (list c d)(defun spl2arc(ent / obj len num spt ept ss i pt1 pt2 pt3 s) (setq obj (vlax-ename-vla-object ent) len (vlax-curve-getDistAtParam obj (vlax-curve-getEndParam obj) num (1+ (fix (/ len dis) num (if (= num 1) 2 num) spt (vlax-curve-getStartPoint obj) ept (vlax-curve-getEndPoint obj) ) (command _.divide ent (* 2 num) (setvar cecolor 1) (setq ss (ssget _p) (if (equal spt ept) (setq i 1) (setq i 0) ) (setq pt3 spt) (setq s (ssadd) (repeat num (setq pt2 (cdr (assoc 10 (entget (ssname ss i) (if (/= num (/ (+ i 2) 2) (setq pt1 (cdr (assoc 10 (entget (ssname ss (1+ i) (setq pt1 ept) ) (command _.arc pt3 pt2 pt1) (ssadd (entlast) s) (setq pt3 pt1) (setq i (+ 2 i) ) (command _.erase ss ent ) (setvar cecolor 188) s)(defun ss_add(s1 s2 / n) (setq n -1) (repeat (sslength s1) (ssadd (ssname s1 (setq n (1+ n) s2) ) s2)(prompt n请选择要生成边界轮廓线的所有对象(图块轮廓要闭合):)(if (setq ss (ssget (0 . line,arc,circle,*polyline,spline,ellipse,insert) (progn (command _.undo _be) (setq os (getvar osmode) cor (getvar cecolor) qa (getvar qaflags) ) (setvar osmode 0) (setvar cmdecho 0) (setq n -1) (repeat (sslength ss) (vla-getboundingbox (vlax-ename-vla-object (ssname ss (setq n (1+ n) pt1 pt2) (setq l_pt (append l_pt (list (vlax-safearray-list pt1) (vlax-safearray-list pt2) ) (setq l_pt (maxmin l_pt) pt1 (car l_pt) pt2 (cadr l_pt) dis (/ (distance pt1 pt2) 20) pt1 (polar pt1 (angle pt2 pt1) dis) pt2 (polar pt2 (angle pt1 pt2) dis) ) (setq l_pt (maxmin (append (viewpt) (list pt1 pt2) (command _.zoom _w (car l_pt) (cadr l_pt) (setvar cecolor 188) (command _.rectang pt1 pt2) (setq ent (entlast) (command _.boundary _a _o _r _i _y _b _n ent ss (polar pt1 (angle pt1 pt2) (/ dis 2) ) (if (equal (entlast) ent) (progn (entdel ent) (prompt n没有边界轮廓线!) ) (progn (entdel ent) (command _.erase (ssget c pt1 pt1 (0 . region) (62 . 188) ) (setq m 0) (if (setq ss (ssget x (0 . region) (62 . 188) (progn (command _.union ss ) (entmod (subst (cons 62 1) (cons 62 188) (entget (setq ent (entlast) (command _.explode ent) (setq ss (ssget _p) (if (= (cdr (assoc 0 (entget (ssname ss 0) REGION) (progn (setvar qaflags 1) (command _.explode ss ) (setq ss (ssget _p) ) ) (if (ssget p (0 . spline,ellipse) (progn (setq dis (abs (if (setq dis (getreal n请输入样条曲线或椭圆的取样距离:) dis 600.0) (if (= dis 0.0) (setq dis 600.0) ) ) (setq n -1) (repeat (sslength ss) (setq ent (ssname ss (setq n (1+ n) name (cdr (assoc 0 (entget ent) ) (if (or (= name SPLINE) (= name ELLIPSE) (progn (ssdel ent ss) (setq ss (ss_add (spl2arc ent) ss) (setq n (1- n) ) ) ) (setq n -1) (while (setq ent (ssname ss (setq n (1+ n) (if (entget ent) (progn (command _.pedit ent _y _j ss ) (setq m (1+ m) ) ) ) ) ) (if (setq ss (ssget x (0 . *polyline) (62 . 188) (progn (setq n -1) (repeat (sslength ss) (entmod (subst (cons 62 1) (cons 62 188) (entget (ssname ss (setq n (1+ n) ) (setq m (+ m (sslength ss) ) ) (if (= m 0) (prom

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论