明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: sunny_w

三维线偏移的办法

  [复制链接]
发表于 2004-5-21 18:40:00 | 显示全部楼层
下面是一条空间线条,麻烦


1,沿x 方向,向外偏移800。


2,沿y方向,向外偏移800


谢谢

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 2004-5-23 10:40:00 | 显示全部楼层
命令: offset 指定偏移距离或 [通过(T)] <36.0842>: 10 选择要偏移的对象或 <退出>:
指定点以确定偏移所在一侧:
无法偏移该对象。
选择要偏移的对象或 <退出>:
发表于 2004-5-23 19:41:00 | 显示全部楼层
3dpoly线不用程序是不能偏移的
发表于 2004-5-23 19:43:00 | 显示全部楼层
<BR>(defun C:3D_OFFSET (/                                 ENAME                 OBJECT         LISTA                 LISTA1         X<BR>                                         N                                 DISTA                 OBJECT1 ENAME1         LAY                                 COL<BR>                                         LTYPE                 LTS                                 LW                                 LISTAZ         NVER<BR>                                 )<BR>         (setq ESTEDIBUJO (vla-get-activedocument (vlax-get-acad-object)))<BR>(setq *MODELSPACE* (vla-get-modelspace ESTEDIBUJO))<BR>(vl-load-com)<BR>         (setq DISTA (getdist (strcat "\nSpecify offset distance &lt;"<BR>                                                                         (rtos (getvar "OFFSETDIST") 2 2)<BR>                                                                         "&gt; :"<BR>                                                                 )<BR>                                                 )<BR>         )<BR>         (if (not DISTA)<BR>                         (setq DISTA (getvar "OFFSETDIST"))<BR>         )<BR>         (setq ENAME (entsel "\nSelect 3dpoly to offset or &lt;exit&gt;: "))<BR>         (while ENAME<BR>                         (setq ENAME         (car ENAME)<BR>                 OBJECT (vlax-ename-&gt;vla-object ENAME)<BR>                         )<BR>                         (if (= (vlax-get-property OBJECT "ObjectName") "AcDb3dPolyline")<BR>                                         (progn<BR>        (setq LAY (vlax-get-property OBJECT "Layer")<BR>                                                 LTYPE (vlax-get-property OBJECT "Linetype")<BR>                                                 COL (vlax-get-property OBJECT "Color")<BR>                                                 LTS (vlax-get-property OBJECT "LinetypeScale")<BR>                                                 LW (vlax-get-property OBJECT "Lineweight")<BR>                                                 IS_CLOSED (vlax-get-property OBJECT "Closed")<BR>                                                 LISTA (vlax-get-property OBJECT "Coordinates")<BR>                                                 LISTA (vlax-safearray-&gt;list (vlax-variant-value LISTA))<BR>                                                 N         0<BR>                                                 LISTA1 NIL<BR>        )<BR>        (while (setq X (nth N LISTA))<BR>                 (setq NVER                 (/ (length LISTA) 3.00)<BR>         LISTA1 (append LISTA1 (list X))<BR>         X                                         (nth (1+ N) LISTA)<BR>         LISTA1 (append LISTA1 (list X))<BR>         LISTAZ (append LISTAZ (list (nth (+ 2 N) LISTA)))<BR>         N                                         (+ 3 N)<BR>                 )<BR>        )<BR>        (setq PT (getpoint "\nSpecify point on side to offset?: "))<BR>        (setq N                                         (1- (length LISTA1))<BR>                                                 LISTA1 (vlax-safearray-fill<BR>                                                                 (vlax-make-safearray vlax-vbdouble (cons 0 N))<BR>                                                                 LISTA1<BR>                                                 )<BR>                                                 OBJECT (vla-addlightweightpolyline *MODELSPACE* LISTA1)<BR>                                                 ENAME         (vlax-vla-object-&gt;ename OBJECT)<BR>        )<BR>        (command "offset" DISTA ENAME PT "")<BR>        (setq OBJECT1 (vlax-ename-&gt;vla-object (entlast)))<BR>        (vlax-put-property OBJECT1 "Closed" IS_CLOSED)<BR>        (setq LISTA1 (vlax-safearray-&gt;list<BR>                                                                 (vlax-variant-value<BR>                         (vlax-get-property OBJECT1 "Coordinates")<BR>                                                                 )<BR>                                                 )<BR>                                                 N                                         0<BR>                                                 LISTA         NIL<BR>        )<BR>        (entdel ENAME)<BR>        (if (= (/ (length LISTA1) 2) NVER)<BR>                 (progn<BR>                                 (while (setq X (nth N LISTA1))<BR>                                                 (setq LISTA (append LISTA (list X))<BR>                                         LISTA (append LISTA (list (nth (1+ N) LISTA1)))<BR>                                         LISTA (append LISTA (list (nth (/ N 2) LISTAZ)))<BR>                                         N                 (+ 2 N)<BR>                                                 )<BR>                                 )<BR>                                 (setq N         (1- (length LISTA))<BR>                         LISTA         (vlax-safearray-fill<BR>                                         (vlax-make-safearray vlax-vbdouble (cons 0 N))<BR>                                         LISTA<BR>                         )<BR>                         OBJECT (vla-add3dpoly *MODELSPACE* LISTA)<BR>                         ENAME         (vlax-vla-object-&gt;ename OBJECT1)<BR>                                 )<BR>                                 (entdel ENAME)<BR>                                 (vlax-put-property OBJECT "Closed" IS_CLOSED)<BR>                                 (vlax-put-property OBJECT "Layer" LAY)<BR>                                 (vlax-put-property OBJECT "Linetype" LTYPE)<BR>                                 (vlax-put-property OBJECT "Color" COL)<BR>                                 (vlax-put-property OBJECT "LinetypeScale" LTS)<BR>                                 (vlax-put-property OBJECT "Lineweight" LW)<BR>                 )<BR>                 (prompt<BR>                                 "\nThe number of vertices have to change. Cannot 3d_offset that object"<BR>                 )<BR>        )<BR>                                         )<BR>                                         (prompt "\nCannot 3d_offset that object")<BR>                         )<BR>                         (setq ENAME (entsel "\nSelect 3dpoly to offset or &lt;exit&gt;: "))<BR>         )<BR>         (princ)<BR>)<BR>


转贴楼上的看看吧


不过不适合做日本图因为没有高程
发表于 2004-5-23 21:55:00 | 显示全部楼层
楼上的,我对vl不懂,麻烦说怎么用,我加载了输入后,运行了,我选择物体后出现


        3D_OFFSET


Specify offset distance &lt;-1&gt; :100


Select 3dpoly to offset or &lt;exit&gt;


就停了下来,不知道设么原因?麻烦给以解答。
发表于 2004-5-25 01:13:00 | 显示全部楼层
wb0815,请针对闭合的3D线运行该程序,看看效果。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-10-1 08:35 , Processed in 0.157494 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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