明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3836|回复: 11

[求助]如何在图纸空间不激活视口的情况下得到模型空间WCS的点坐标?

  [复制链接]
发表于 2009-7-27 22:56:00 | 显示全部楼层 |阅读模式
本帖最后由 作者 于 2009-7-28 11:46:46 编辑

其实就是在图纸空间的一个视口上(非激活进入)点选一点,如何得到这点在模型空间WCS真实坐标?CAD的标注可以识别真实坐标,但是其内部怎么实现的就不知道了。如果是trans函数,可惜看的不明白,不知道后面的参数应该是几?

发表于 2009-7-28 23:11:00 | 显示全部楼层

我想 应该是(trans  pt 3 2)

其中你可能要用到vla-get-ActivePViewport来判断处于哪个一个pviewport中.

 楼主| 发表于 2009-7-29 13:09:00 | 显示全部楼层
判断那个视口没问题,楼上的(trans  pt 3 2) 是不对的,X坐标是对的,Y和Z坐标不对。
发表于 2009-7-30 14:46:00 | 显示全部楼层

昨天忘记考虑target 不在0,0,0的情况了。应该添加target的偏移量

(defun c:pm (/ )
  (setq ent (car (entsel)))                ; 选择pviewport
  (setq obj (vlax-ename->vla-object ent))               
  (setq tag (vlax-safearray->list (vlax-variant-value (vla-get-Target obj))))
  (mapcar '+ (trans (getpoint "\n请选择点: ") 3 2) tag)

发表于 2009-7-30 15:27:00 | 显示全部楼层
 楼主| 发表于 2009-7-31 10:47:00 | 显示全部楼层
仍然不对,好像UCS也对此有影响。我到5楼提供的论坛去看看。
发表于 2009-7-31 12:16:00 | 显示全部楼层
对啊,如果你模型空间是ucs的要再转一次(trans (mapcar '+ (trans (getpoint "\n请选择点: ") 3 2) tag) 0 1)
发表于 2009-7-31 13:20:00 | 显示全部楼层

我测试highflybir版的代码还是错的,这个问题龙龙仔版主N年前就研究过,我没找到原帖网址,我把大概的帖出来:

(defun c:tt (/ a w wdxf ea en xp w10 w40 w41 w69 vctrx vctry lpt rpt)
  (while (not a)
    (setq a (ssget ":s" '((0 . "viewport"))))
  )
  (setq w (ssname a 0))
  (setq wdxf (entget w))
  (setq ea (assoc -3 (entget w '("acad")))
        en (reverse (cdr (reverse (cdr (cddadr ea)))))
  )
  (setq xp (/ (cdr (assoc 41 wdxf)) (cdr (nth 4 en))))
  (setq w10 (cdr (assoc 10 wdxf)))
  (setq w40 (/ (cdr (assoc 40 wdxf)) xp))
  (setq w41 (/ (cdr (assoc 41 wdxf)) xp))
  (setq w69 (cdr (assoc 69 wdxf)))
  (command "_.mspace")
  (command "_.cvport" w69)
  (command "_.ucs" "v")
  (setq vctrx (car (getvar "viewctr")))
  (setq vctry (cadr (getvar "viewctr")))
  (setq lpt (list (- vctrx (/ w40 2.0)) (- vctry (/ w41 2.0))))
  (setq rpt (list (+ vctrx (/ w40 2.0)) (+ vctry (/ w41 2.0))))
  (command "_.rectang" lpt rpt)
  (princ)
)

发表于 2009-7-31 13:42:00 | 显示全部楼层
4楼的代码,还要加一个 vla-get-TwistAngle 判断
发表于 2009-7-31 15:29:00 | 显示全部楼层
龙龙仔的代码很好用,缺点是要 (command "_.mspace")
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-26 12:18 , Processed in 0.207668 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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