如何使cad图z轴为零 您所在的位置:网站首页 3dmax怎么把轴调回原样位置 如何使cad图z轴为零

如何使cad图z轴为零

2023-05-12 20:57| 来源: 网络整理| 查看: 265

主要有2种方法,第一种方法:利用“MOVE“ 移动命令,1,选择需要Z轴归0的线;2,依次输入M——0,0,0——0,0,1e99 (这步是将线移到Z轴无限大)3,选择需要Z轴归0的线;4,依次输入M——P(选择上次内容)——0,0,0——0,0,-1e99 (这步是将线移回Z轴0)注意:这个方法对线、多段线、云线、样条曲线都有效,但对于处于块内的物体就不行了,需要炸开或进入块内编辑,这样会很麻烦也浪费时间。第二种方法:如果天正中 *** 作,直接使用“统一标高”命令,即 TYBG依次输入 TYBG——回车或Y——选择图形——回车注意:这个方法对普通线,块都有效(这点非常好),但对云线、多段线这类有“标高”的线无效,对于样条曲线这种有“控制点Z坐标”和“拟合点Z坐标”也不能完成归0。呵呵,看过我的回答了把?z轴清零实在cad中 *** 作,在cad中选中所有的线条,然后输入ch,空格,会出现特性栏,在特性栏里面有个z轴方向的坐标,把他改为0即可。注意:只有线条才会显示坐标数据。所以先清理好你的cad图。“建筑工匠”请看好我所回答的,是全选,整体修改,不是一个个的修改好不好。既然你推荐天正,那我就给出天正工具的具体位置,不过楼主看清楚了,天正是个插件,你必须安装了。天正工具栏——工具——其他工具——统一标高,使用时注意下面的选项提示。祝你成功!

在AutoCAD里面,Z坐标归零有很多方法,根据不同的环境做出选择。

法向坐标为-1的情况,只有重新描一遍对象才可以归零,这样图纸才不会出现问题。

在默认法向坐标1的情况下,流行的有两个。

1)选择除块以外的对象,移动对象到Z无穷远,然后移动回来,坐标就归零了,不过有个情况就是,如果对象本来就是无穷远,就不好用了。

2)Z坐标归零加强版。对块面域等都做出Z坐标归零,原理是在AutoCAD里面,所有对象都有属性,代码10~15是表示坐标,多段线标高代码为38,那么对这些Z坐标修改为0,达到Z变0的要求。就是不得修改法向坐标。代码如下:

;;;;;;Z坐标归零;;(defun c:z0 ( / block c10 c38 e ent i len ss) (setvar "cmdecho" 0) (setvar "blipmode" 0);;包围盒坐标(defun getboundingbox (ename / lb ur) (vla-getboundingbox (vlax-ename->vla-object ename) 'lb 'ur) (mapcar 'vlax-safearray->list (list lb ur)));移动对象面域Z归零(defun move-region-to-wcs-plan (ename / obj z) (setq obj (vlax-ename->vla-object ename)) (if (and (= "AcDbRegion" (vla-get-objectname obj)) (/= 00 (setq z (caddr (car (getboundingbox ename))))))  (vla-move obj (vlax-3d-point (list 0 0 z)) (vlax-3d-point (list 0 0 0)) ) ))(defun zero-group (x / x) (cond;; 处理 10-15 段,含 Z 坐标且非零组码,设置Z = 00  ((and (>= (car x) 10) ( (length x) 3) (/= 00 (nth 3 x)))   (setq c10 (1+ c10))   (cons (car x) (list (cadr x) (caddr x) 00))  )  ;; 处理 38 段(标高属性)  ((and (= (car x) 38) (/= 00 (cdr x)))   (setq c38 (1+ c38))   '(38  00)  )  ;; 其余组码原样返回  (t x) ))(defun zero-ent  (e / dxf new) (setq dxf (entget e)) (if (= (cdr (assoc 0 dxf)) "REGION")  (move-region-to-wcs-plan e)  (progn   (setq new (mapcar 'zero-group dxf))   (if (not (equal dxf new))    (entmod new)   )  ) ) new) (if (null vlax-dump-object) (vl-load-com) ) (princ "选择需要将Z坐标或标高属性清零的对象 : ") (if (null (setq ss (ssget))) (setq ss (ssget "X")) ) (if ss  (progn   (setq  len (sslength ss) i 0 c10 0 c38 0)   (vla-startundomark (vla-get-activedocument (vlax-get-acad-object)))   ;; 块定义内实体归零   (vlax-for block (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object)))    (vlax-for e block     (zero-ent (vlax-vla-object->ename e))    )   )   ;;除块以外Z标高归零   (repeat len    (zero-ent (setq ent (ssname ss i)))    (setq i (1+ i))   )   (vla-endundomark (vla-get-activedocument (vlax-get-acad-object)))   (command "_regen")   (princ (strcat "选择的 " (itoa len)" 个对象中,\n" (itoa c10)" 个非零Z坐标, " (itoa c38) " 个标高属性被强制清零"))  )  (princ "\n选择集为空") ) (princ) )(defun C:tes ( / &ac0 &k1 &kw1 &ob1 mspace);重新描一遍对象;圆,椭圆,弧,直线,多段线 (setvar "cmdecho" 0) (setvar "blipmode" 0) (if (null vlax-dump-object) (vl-load-com) ) ;(command "UCS" "") (setq mSpace (vla-get-ModelSpace (vla-get-ActiveDocument (vlax-get-acad-object))) &n4 0) (if (setq &kw1 (ssget '((0  "CIRCLE,ELLIPSE,ARC,LINE,LWPOLYLINE"))));1  (progn;;1   (setq &n5 (rtos (sslength &kw1) 2 0))   (while (setq &k1 (ssname &kw1 0));1    (setq &kw1 (ssdel &k1 &kw1) &ob1 (vlax-ename->vla-object &k1) &ac0 (vla-get-objectname &ob1) &n6 0)    (if (member &ac0 '("AcDbArc" "AcDbCircle" "AcDbEllipse" "AcDbLine" "AcDbPolyline")) (setq &n6 (T~20150708~1 &ob1 &ac0 mSpace)) )    (setq &n4 (+ &n4 &n6))    (vla-delete &ob1)   );while;1   (princ (strcat "\n共处理了" &n5 "个曲线," "共删除了长度小于005的曲线" (rtos &n4 2 0) "个"))  );progn;1 );if;1 (prin1));;=============;重新描一遍对象;==============(defun T~20150708~1 (&ob1 &ac0 mSpace / &ac0 &ang1 &ang2 &ang3 &clo &co1 &cx1 &dis1 &dis2 &dis3 &end &n1 &n2 &n3 &ob1 &ob2 &p1 &p2 &p3 &p5 &r1 &ss1 &sta &tc1 aw ew mspace) (if (List (Vlax-Variant-Value &p2))             &p2 (list (car &p2) (cadr &p2))             &p2 (Vlax-3d-Point &p2)             &dis3 (vla-get-MinorRadius &ob1)             &dis2 (vla-get-MajorRadius &ob1)             &dis2 (/ &dis3 &dis2)       )       (setq &ob2 (vla-addEllipse mSpace &p3 &p2 &dis2))       (vla-put-StartAngle &ob2 &ang1)       (vla-put-EndAngle &ob2 &ang2)       (vla-put-layer &ob2 &tc1) (vla-put-Color &ob2 &co1) (vla-put-Linetype &ob2 &cx1)       (if (= aw nil) ;3-4        (progn;;3-4         (setq &ang3 (- ( pi 2) &ang2) &ang2 (- ( pi 2) &ang1) &ang1 &ang3)         (setq &p5 (vlax-curve-getStartPoint &ob2))         (if (>= (distance &p5 &sta) 001);3-5          (progn;;3-5           (vla-put-StartAngle &ob2 &ang1)           (vla-put-EndAngle &ob2 &ang2)          );progn;3-5         );if;3-5        );progn;3-4       );if;3-4      );progn;3-3     );3-3    );progn;2   );if;2   (if (= &ac0 "AcDbLine") (entmake (list '(0  "LINE") (cons 8 &tc1) (cons 62 &co1) (cons 6 &cx1) (cons 10 &sta) (cons 11 &end))) )   (if (= &ac0 "AcDbPolyline");4    (progn;;4     (setq &n1 (fix (vlax-curve-getEndParam &ob1)) &ss1 '() &n2 0 &p2 nil)     (if aw (setq &clo '(70  1)) (progn (setq &clo '(70  0) &n1 (1+ &n1)) ))     (repeat &n1      (setq &p1 (vlax-curve-getPointAtDist &ob1 (vlax-curve-getDistAtParam &ob1 &n2)))      (if (or (= &p2 nil) (and (/= &p2 nil) (> (distance &p2 &p1) 1)))       (progn        (setq &p1 (list (car &p1) (cadr &p1)))        (setq &ss1 (cons (cons 10 &p1) &ss1))        (vla-getwidth &ob1 &n2 'aw 'ew)        (setq &ss1 (cons (cons 40 aw) &ss1) &ss1 (cons (cons 41 ew) &ss1))        (setq aw (vla-getBulge &ob1 &n2) &ss1 (cons (cons 42 aw) &ss1))       )      )      (if (and (/= &p2 nil) ( (length &ss1) 4) (entmake (append (list '(0  "LWPOLYLINE") '(100  "AcDbEntity") (cons 8 &tc1) (cons 62 &co1) (cons 6 &cx1) '(100  "AcDbPolyline") (cons 90 (/ (length &ss1) 4)) &clo ) &ss1)) )    );progn;4   );if;4  );progn;1 );if;1 &n3);;复制到记事本,以lsp为后缀命名,打开CAD,autolisp加载,命令TES,就会把对象重新描一遍

欢迎分享,转载请注明来源:内存溢出

原文地址:https://outofmemory.cn/yw/10339251.html



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有