找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 818|回复: 26

[求助] 如何纠正非等比块的210组码

[复制链接]

已领礼包: 604个

财富等级: 财运亨通

发表于 2018-8-7 14:29:37 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
以前看高手讨论纠正210组码,我只是看热闹。都是在世界坐标下工作,想到自己定义的块,210组码不可能出错,结果出错了。如图本来我只是想画垂线,结果不垂直。经检查,发现Z0坐标不为0,认为是Z坐标归0程序有错。再检查,发现是210组码的问题。实在搞不定,哪位高手出来帮一下忙,不胜感谢。
1.gif

Drawing1.rar

8 KB, 下载次数: 7, 下载积分: D豆 -1 , 活跃度 1

测试图

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 20个

财富等级: 恭喜发财

发表于 2018-8-7 14:57:42 | 显示全部楼层
你传的图,怎么和你图片不一样?

你的图,块里面的线Z坐标不一样
搜狗截图20180807145615.png
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 604个

财富等级: 财运亨通

 楼主| 发表于 2018-8-7 14:59:51 | 显示全部楼层
本帖最后由 /db_自贡黄明儒_ 于 2018-8-7 15:02 编辑
marting 发表于 2018-8-7 14:57
你传的图,怎么和你图片不一样?

你的图,块里面的线Z坐标不一样

一样的,我把多余的删除了。重新插入这块,发现块定义的块Z是为0的。由于这个块镜向过,变成了非等比块,故210组码纠正不了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 20个

财富等级: 恭喜发财

发表于 2018-8-7 15:02:20 | 显示全部楼层
/db_自贡黄明儒_ 发表于 2018-8-7 14:59
一样的,我把多余的删除了。重新插入这块,发现块定义的块Z是为0的。

你里面的线Z不一样,你块Z=0没有用啊,你捕捉的是线啊。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 604个

财富等级: 财运亨通

 楼主| 发表于 2018-8-7 15:05:00 | 显示全部楼层
本帖最后由 /db_自贡黄明儒_ 于 2018-8-7 15:06 编辑
marting 发表于 2018-8-7 15:02
你里面的线Z不一样,你块Z=0没有用啊,你捕捉的是线啊。

重新插入块,块定义里面的线的Z=0。我只是想纠正这个块,使用垂线是垂直的。

点评

[attachimg]79404[/attachimg]  详情 回复 发表于 2018-8-7 15:15
看下你里面的的线的NORAML 选择对象: ((-1 . ) (0 . "LINE") (330 . ) (5 . "232") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "中心线") (100 . "AcDbLine") (10 -180.493 69.7957 2.84217e-014)  详情 回复 发表于 2018-8-7 15:11
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2018-8-7 15:11:22 | 显示全部楼层
/db_自贡黄明儒_ 发表于 2018-8-7 15:05
重新插入块,块定义里面的线的Z=0。我只是想纠正这个块,使用垂线是垂直的。

看下你里面的的线的NORAML

选择对象: ((-1 . <图元名: -24f7f0>) (0 . "LINE") (330 . <图元名: -251308>) (5 . "232")
(100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "中心线") (100 . "AcDbLine")
(10 -180.493 69.7957 2.84217e-014) (11 180.493 -69.7956 0.0) (210 -0.0322069
0.0383866 0.998744)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 604个

财富等级: 财运亨通

 楼主| 发表于 2018-8-7 15:14:46 | 显示全部楼层
newer 发表于 2018-8-7 15:11
看下你里面的的线的NORAML

选择对象: ((-1 . ) (0 . "LINE") (330 . ) (5 . "232")

对呀,也不知怎么就定义成这个样子了。所以想纠正它。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2018-8-7 15:15:18 | 显示全部楼层
/db_自贡黄明儒_ 发表于 2018-8-7 15:05
重新插入块,块定义里面的线的Z=0。我只是想纠正这个块,使用垂线是垂直的。



搜狗截图20180807151459.png
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 604个

财富等级: 财运亨通

 楼主| 发表于 2018-8-7 15:46:13 | 显示全部楼层
本帖最后由 newer 于 2018-8-8 10:01 编辑

N版,您是重新插入的块,还是成功纠正了组码210?下面是G版写的,但还是解决不了。

  1. (defun c:correct210 (/ ss za mat n)
  2.   (setq ss (ssget))
  3.   (if ss
  4.     (repeat (setq n (sslength ss))
  5.       (setq obj (vlax-ename->vla-object (ssname ss (setq n (1- n)))))
  6.       (setq ZA (vlax-safearray->list
  7.                  (vlax-variant-value (vla-get-Normal obj))
  8.                )
  9.       )
  10.       (setq mat        (vlax-tmatrix
  11.                   (list        (list 1 0 (car ZA) 0)
  12.                         (list 0 1 (cadr ZA) 0)
  13.                         (list 0 0 (caddr ZA) 0)
  14.                         (list 0 0 0 1)
  15.                   )
  16.                 )
  17.       )
  18.       (vla-TransformBy obj mat)
  19.     )
  20.   )
  21. )


论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 20个

财富等级: 恭喜发财

发表于 2018-8-7 16:48:24 | 显示全部楼层
/db_自贡黄明儒_ 发表于 2018-8-7 15:46
N版,您是重新插入的块,还是成功纠正了组码210?下面是G版写的,但还是解决不了。

(defun c:tt ()
  (if (and (setq e (car (entsel "\n拾取块<退出>:")))
           (setq o (vlax-ename->vla-object e))
           (= (vla-get-objectname o) "AcDbBlockReference")
      )
    (progn (setq blkname (vla-get-name o))
           (setq blks (vla-get-blocks
                        (vla-get-activedocument (vlax-get-acad-object))
                      )
                 i 0
           )
           (vlax-for item blks
             (if (and (= (vla-get-islayout item) :vlax-false)
                      (= (vla-get-name item) blkname)
                 )
               (progn
                 (vlax-for ent item
                   (if (= (vla-get-objectname ent) "AcDbLine")
                     (progn (setq spt (vlax-curve-getstartpoint ent)
                                  ept (vlax-curve-getendpoint ent)
                                  spt (list (car spt) (cadr spt) 0.0)
                                  ept (list (car ept) (cadr ept) 0.0)
                            )
                            (vla-put-startpoint ent (vlax-3d-point spt))
                            (vla-put-endpoint ent (vlax-3d-point ept))
                     )
                   )
                   (vla-put-normal ent (vlax-3d-point '(0 0 1)))
                   (setq i (1+ i))
                 )
               )
             )
           )
           (princ (strcat "\n修改了图块" blkname "中 " (itoa i) " 个实体的法线向量."))                          
    )
  )
  (princ)
)

把图块内的实体的NORMAL掰直。

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 604个

财富等级: 财运亨通

 楼主| 发表于 2018-8-7 17:00:14 | 显示全部楼层
marting 发表于 2018-8-7 16:48
(defun c:tt ()
  (if (and (setq e (car (entsel "\n拾取块:")))
           (setq o (vlax-ename->vla-objec ...

试了一下,好像不行呢

点评

你意思是修改块引用的210, 然后块的显示还是不变化样子? 1、原来的块引用不是0,0,1, 法线指向别的方向了,所以你在WCS下看到的是这个实体的投影,你只画了一根线体现不出来,要是组成个平面,看2 2、法线你想  详情 回复 发表于 2018-8-7 18:15
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2018-8-7 18:15:44 | 显示全部楼层
/db_自贡黄明儒_ 发表于 2018-8-7 17:00
试了一下,好像不行呢

你意思是修改块引用的210, 然后块的显示还是不变化样子?

1、原来的块引用不是0,0,1, 法线指向别的方向了,所以你在WCS下看到的是这个实体的投影,你只画了一根线体现不出来,要是组成个平面,看2
2、法线你想改0,0,1,那么块引用肯定要变化,因为实际块法线平面的图形肯定和上面说的投影不一样

所以,你很难保证图形不变化。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 20个

财富等级: 恭喜发财

发表于 2018-8-7 18:28:57 | 显示全部楼层
本帖最后由 marting 于 2018-8-7 18:30 编辑
/db_自贡黄明儒_ 发表于 2018-8-7 17:00
试了一下,好像不行呢

代码是修改块定义里面的实体的NORMAL,没修改INSERT
用下 (vla-put-normal blk (vlax-3d-point '(0 0 1.0))) ,看你图块变什么样了,现在的样子和位置就是它在原来NORMAL平面上的位置,到WCS下,肯定要变了,如果你想位置回来,移动到原来的插入点就行了。 角度变化这个你有时间要算下。不过形状肯定是要变化的。
你用下3D ROTATE,手工旋转下原来的块,看看。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 604个

财富等级: 财运亨通

 楼主| 发表于 2018-8-7 18:36:34 | 显示全部楼层
newer 发表于 2018-8-7 18:15
你意思是修改块引用的210, 然后块的显示还是不变化样子?

1、原来的块引用不是0,0,1, 法线指向别的 ...

G版写的这个correct210就是保证图形不变,在有些情况下,确实是对的。
但对于我这个图形,则运行出错,即使爆破成一根线,仍然出错。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 604个

财富等级: 财运亨通

 楼主| 发表于 2018-8-7 18:39:55 | 显示全部楼层
marting 发表于 2018-8-7 18:28
代码是修改块定义里面的实体的NORMAL,没修改INSERT
用下 (vla-put-normal blk (vlax-3d-point '(0 0 1. ...

爆破后图形是不动的,也许有解。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-3-28 19:44 , Processed in 0.375419 second(s), 65 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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