明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3416|回复: 21

将图形中的所有对象z轴坐标归零

  [复制链接]
发表于 2020-9-2 17:23:51 | 显示全部楼层 |阅读模式
本帖最后由 OooCcc 于 2020-9-6 10:25 编辑

日常绘图中有时会遇到莫名不能合并pl线,不能倒角,填充选择不到封闭图形区域。
这些问题很可能是有部分对象在z轴上不是0

这个程序是本人写的一个实用代码。用于将图形中的所有对象(包括模型空间与图纸空间内的对象、图块内的所有对象等)的z轴或者厚度都设置为0.
本脚本目前无法解决的问题如下:
1、将3D线段转换为2Dpline线后不能归零
2、将2Dpline线进行3D旋转后无法归零
3、将2D圆弧或者圆进行3D旋转后无法归零



本帖子中包含更多资源

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

x
 楼主| 发表于 2020-9-3 20:50:43 | 显示全部楼层
本帖最后由 OooCcc 于 2020-9-3 21:32 编辑
870447782孤星 发表于 2020-9-3 18:35
好的,谢谢,我发的这个GIF是可以解决么?目前的水平看不懂反应器写的这个东西

另外,不太懂你的gif要解决的是啥问题。。。
刚才又看了下,知道你说的是什么了。。。。

首先绘制有不同z坐标点的线段,然后转换为pl线后会产生z轴不归零的问题。。。。

我研究下先。。。。。。。。。。

找到原因了:这是应为pline线只能是二维的,所以将三维的线转换为二维的pline的时候,cad自动将ucs坐标系转换到了与线的2个z轴对应的坐标系,然后转换为pline线。。。这样就导致了pline的二维点坐标还是两两出现的,是正确的的。

由于pline线只能是二维的,所以pline线的坐标点都是两两出现的,也就是pline线的coordinates属性内的数据只有x和y的坐标,而没有z坐标。
这就导致了不能简单地用改变z轴的方法将其归0。。。。

目前只有个简单粗暴的方法。。。就是把这种pline线炸开了归0。。。。

至于如何将pline线正确归0,只想到了一个不成熟的方法:就是将该段pline线复制后炸开,取其相对于当前坐标系正确的三维点坐标,取其的x和y坐标点替换pline的coordinates内的坐标数据。
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-9-3 16:52:54 | 显示全部楼层
870447782孤星 发表于 2020-9-3 15:44
是这样的,我在单位试了一下,厚度确实没了,可能昨晚家里的cad的问题。那么能改成不去掉厚度么?我们的 ...

可以啊~
你去把下面这段代码删掉就好了:
    ;;Elevation属性
    (setq _objs "AcDbHatch AcDbLightWeightPolyline AcDbPolyline")
    (if (vl-string-search _objname _objs)
      (vla-put-elevation b 0)
    )
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-9-3 08:57:36 | 显示全部楼层
本帖最后由 OooCcc 于 2020-9-3 09:27 编辑
870447782孤星 发表于 2020-9-3 00:01
已经下载,测试了一下好像多段线的厚度并不能归0,还有几个问题想请教大佬:1.多段线的端点本身就是二维点 ...

2d多段线好像只有个高程,所以只需要改Elevation属性就能归零了。关于多段线厚度不能归0,我这里测试了下,貌似没这问题呀。。。

本帖子中包含更多资源

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

x
回复 支持 1 反对 0

使用道具 举报

发表于 2020-9-2 17:55:13 | 显示全部楼层
优秀呀,,下载试一下,因为之前用的Z轴归零的话,是不归零的图形都在一个面上,,,遇到不在一个面上不归零的图形就不有办法,,谢谢楼主的分享
 楼主| 发表于 2020-9-2 19:15:30 | 显示全部楼层
999999 发表于 2020-9-2 17:55
优秀呀,,下载试一下,因为之前用的Z轴归零的话,是不归零的图形都在一个面上,,,遇到不在一个面上不归 ...

希望对你有用~呵呵,我也是网上教程用了一堆没法彻底归零,而且还麻烦,所以抽空写了这个~~
发表于 2020-9-3 00:01:57 | 显示全部楼层
已经下载,测试了一下好像多段线的厚度并不能归0,还有几个问题想请教大佬:1.多段线的端点本身就是二维点了吧?2.3d点转成2d点怎么去判断Z轴呢?不是应该去判定坐标的Z轴再去归0么?初学者,请多赐教
发表于 2020-9-3 12:23:43 | 显示全部楼层
下载试一下
发表于 2020-9-3 15:44:55 | 显示全部楼层
OooCcc 发表于 2020-9-3 08:57
2d多段线好像只有个高程,所以只需要改Elevation属性就能归零了。关于多段线厚度不能归0,我这里测试了下 ...

是这样的,我在单位试了一下,厚度确实没了,可能昨晚家里的cad的问题。那么能改成不去掉厚度么?我们的画图是采用厚度去判定风管的尺寸,还有我做了个测试,是线段设置了Z轴再转为多段线之后的运行的结果,产生了Z轴不归0,已经线段位置改变的情况

本帖子中包含更多资源

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

x
发表于 2020-9-3 18:35:49 | 显示全部楼层
OooCcc 发表于 2020-9-3 16:52
可以啊~
你去把下面这段代码删掉就好了:
    ;;Elevation属性

好的,谢谢,我发的这个GIF是可以解决么?目前的水平看不懂反应器写的这个东西
 楼主| 发表于 2020-9-3 20:48:34 | 显示全部楼层
870447782孤星 发表于 2020-9-3 18:35
好的,谢谢,我发的这个GIF是可以解决么?目前的水平看不懂反应器写的这个东西

不好意思,说错了。关于厚度是应该删掉
    ;;Thickness属性
    ;;对象的厚度属性
这个下面的代码段
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-15 19:51 , Processed in 0.194464 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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