找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 3901|回复: 17

[研讨] 大家讨论下图纸空间视口到模型空间的转换问题

[复制链接]

已领礼包: 51个

财富等级: 招财进宝

发表于 2013-6-1 15:25:59 | 显示全部楼层 |阅读模式

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

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

×
上图是图纸空间截图

QQ截图20130601152233.png

下图是模型空间截图

QQ截图20130601152419.png

问题是怎么能从图纸空间的视口边界得到模型空间对应大小的红色的矩形?

评分

参与人数 2D豆 +10 收起 理由
wowan1314 + 5 折腾奖
牢固 + 5 出题引导交流奖!

查看全部评分

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2013-6-1 15:38:04 | 显示全部楼层
找找视口对象的属性,应该能得到。

点评

谢谢参与我的帖子,有资料吗,试试写下代码看怎么得到。  详情 回复 发表于 2013-6-1 15:42
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

 楼主| 发表于 2013-6-1 15:42:11 | 显示全部楼层
Gdlprfcu 发表于 2013-6-1 15:38
找找视口对象的属性,应该能得到。

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

使用道具 举报

已领礼包: 308个

财富等级: 日进斗金

发表于 2013-6-1 15:51:17 | 显示全部楼层
高版本本身就有这个功能,不过导出布局的尺寸不对的!
视口对象的属性没研究过,源泉有视口工具,不喜欢在布局中作图,木有研究
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-6-1 16:24:20 | 显示全部楼层
本帖最后由 Love-Lisp 于 2013-6-1 18:28 编辑

  1. (defun c:tt (/ ll ur coords pl)
  2.   (vl-load-com)
  3.   (if (= 0 (getvar 'TILEMODE))
  4.     (progn
  5.       (setq ps (vla-get-PaperSpace
  6.                  (vla-get-ActiveDocument (vlax-get-acad-object))
  7.                )
  8.             i  0
  9.       )
  10.       (vlax-for        pv ps
  11.         (vla-GetBoundingBox pv 'll 'ur)
  12.         (setq ll     (trans (vlax-safearray->list ll) 3 2)
  13.               ur
  14.                      (trans (vlax-safearray->list ur) 3 2)
  15.               coords
  16.                      (vlax-safearray-fill
  17.                        (vlax-make-safearray vlax-vbDouble (cons 0 7))
  18.                        (list (car ll)
  19.                              (cadr ll)
  20.                              (car ur)
  21.                              (cadr ll)
  22.                              (car ur)
  23.                              (cadr ur)
  24.                              (car ll)
  25.                              (cadr ur)
  26.                        )
  27.                      )
  28.         )
  29.         (vla-put-closed
  30.           (setq        pl (vla-AddLightWeightPolyline
  31.                      (vla-get-ModelSpace (vla-get-Document  pv))
  32.                      coords
  33.                    )
  34.           )
  35.           :vlax-true
  36.         )
  37.         (vla-put-color pl (setq i (1+ i)))
  38.         (vlax-vla-object->ename pl)
  39.       )
  40.     )
  41.   )
  42. )

点评

在图纸空间运行,提示错误 命令: tt 错误: 参数类型错误: VLA-OBJECT nil 帮看看。  详情 回复 发表于 2013-6-1 17:26

评分

参与人数 2D豆 +10 收起 理由
xshrimp + 5 很给力!经验;技术要点;资料分享奖!
牢固 + 5 技术引导讨论和指点奖!

查看全部评分

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

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

 楼主| 发表于 2013-6-1 17:26:53 | 显示全部楼层

在图纸空间运行,提示错误

命令: tt
错误: 参数类型错误: VLA-OBJECT nil

帮看看。

点评

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

使用道具 举报

发表于 2013-6-1 18:00:28 | 显示全部楼层
本帖最后由 QiaoCheng 于 2013-6-1 18:11 编辑

我测试了下,倒是可以运行{:soso_e113:}
以前看到不死猫有个多线程的对比两张图纸,楼主弄弄?

(setq  pl (vla-AddLightWeightPolyline (vla-get-ModelSpace (vla-get-Document vp))  coords))
==>
(setq  pl (vla-AddLightWeightPolyline (vla-get-ModelSpace (vla-get-Document pv))  coords))

点评

谢谢,我在试试。 对了,你说的什么多线程对比,你去开个帖子,详细介绍下啊。论坛这么多高手呢。  详情 回复 发表于 2013-6-1 18:10

评分

参与人数 1D豆 +5 收起 理由
Lispboy + 5 指点奖!

查看全部评分

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

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

 楼主| 发表于 2013-6-1 18:10:01 | 显示全部楼层
QiaoCheng 发表于 2013-6-1 18:00
我测试了下,倒是可以运行,但看代码像是画了条线,没见到也没细看
以前看到不死猫有个多线 ...

谢谢,我在试试。

对了,你说的什么多线程对比,你去开个帖子,详细介绍下啊。论坛这么多高手呢。

点评

lisp多线程!就别折腾了,花无谓的时间不如ARX得了,不死猫那个什么多线程只不过是一BUG,根本就算不上多线程,不一会CAD就会崩溃,lisp是不能并发的,很多时候你应该也试过出现“不能重复进入LISP”这样的提示吧。  详情 回复 发表于 2013-6-1 21:07
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-6-1 21:07:03 | 显示全部楼层
Lispboy 发表于 2013-6-1 18:10
谢谢,我在试试。

对了,你说的什么多线程对比,你去开个帖子,详细介绍下啊。论坛这么多高手呢。

lisp多线程!就别折腾了,花无谓的时间不如ARX得了,不死猫那个什么多线程只不过是一BUG,根本就算不上多线程,不一会CAD就会崩溃,lisp是不能并发的,很多时候你应该也试过出现“不能重复进入LISP”这样的提示吧。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 3032个

财富等级: 富可敌国

发表于 2013-6-1 21:08:17 | 显示全部楼层
  1. ;;; vp-outline.lsp (VPO)
  2. ;;;
  3. ;;; Creates a polyline in modelspace that
  4. ;;; has the outline of the selected viewport.
  5. ;;; Supports clipped viewports.
  6. ;;; If vp-outline is called when in mspace it detects
  7. ;;; the active viewport.
  8. ;;;
  9. ;;; c:vp-outline (C:VPO)
  10. ;;;
  11. ;;; By Jimmy Bergmark
  12. ;;; Copyright (C) 1997-2006 JTB World, All Rights Reserved
  13. ;;; Website: www.jtbworld.com (http://www.jtbworld.com)
  14. ;;; E-mail: info@jtbworld.com
  15. ;;;
  16. ;;; 2000-04-10
  17. ;;; 2003-11-19 Added support for drawing the outline in other ucs/view than world/current
  18. ;;;
  19. ;;; 2006-04-06 Added support for twisted views Tom Beauford
  20. ;;;
  21. ;;; Tested on AutoCAD 2000, 2000i, 2002, 2004, 2006, 2007
  22. (vl-load-com)
  23. (defun dxf (n ed) (cdr (assoc n ed)))
  24. (defun ax:List->VariantArray (lst)
  25.   (vlax-Make-Variant
  26.     (vlax-SafeArray-Fill
  27.       (vlax-Make-SafeArray
  28.         vlax-vbDouble
  29.         (cons 0 (- (length lst) 1))
  30.       )
  31.       lst
  32.     )
  33.   )
  34. )
  35. (defun c:VPO
  36.        (/ ad ss ent pl plist xy n vpbl vpur msbl msur ven vpno ok)
  37.   (setq ad (vla-get-activedocument (vlax-get-acad-object)))
  38.   (if (= (getvar "tilemode") 0)
  39.     (progn
  40.       (if (= (getvar "cvport") 1)
  41.         (progn
  42.           (if (setq ss (ssget ":E:S" '((0 . "VIEWPORT"))))
  43.             (progn
  44.               (setq ent (ssname ss 0))
  45.               (setq vpno (dxf 69 (entget ent)))
  46.               (vla-Display (vlax-ename->vla-object ent) :vlax-true)
  47.               (vla-put-mspace ad :vlax-true)
  48.                                         ; equal (command "._mspace")
  49.                                         ; this to ensure trans later is working on correct viewport
  50.               (setvar "cvport" vpno)
  51.                                         ; (vla-put-mspace ad :vlax-false) ; equal (command "._pspace")
  52.               (setq ok T)
  53.             )
  54.           )
  55.         )
  56.         (setq ent (vlax-vla-object->ename (vla-get-activepviewport ad))
  57.               ok  T
  58.         )
  59.       )
  60.       (if ok
  61.         (progn
  62.           (setq ven (vlax-ename->vla-object ent))
  63.           (if (/= 1 (logand 1 (dxf 90 (entget ent))))
  64.                                         ; detect perspective
  65.             (if        (= (vla-get-clipped ven) :vlax-false)
  66.               (progn                        ; not clipped
  67.                 (vla-getboundingbox ven 'vpbl 'vpur)
  68.                 (setq vpbl  (trans (vlax-safearray->list vpbl) 3 2)
  69.                       msbl  (trans vpbl 2 1)
  70.                       msbl  (trans msbl 1 0)
  71.                       vpur  (trans (vlax-safearray->list vpur) 3 2)
  72.                       msur  (trans vpur 2 1)
  73.                       msur  (trans msur 1 0)
  74.                       vpbr  (list (car vpur) (cadr vpbl) 0)
  75.                       msbr  (trans vpbr 2 1)
  76.                       msbr  (trans msbr 1 0)
  77.                       vpul  (list (car vpbl) (cadr vpur) 0)
  78.                       msul  (trans vpul 2 1)
  79.                       msul  (trans msul 1 0)
  80.                       plist (list (car msbl)
  81.                                   (cadr msbl)
  82.                                   (car msbr)
  83.                                   (cadr msbr)
  84.                                   (car msur)
  85.                                   (cadr msur)
  86.                                   (car msul)
  87.                                   (cadr msul)
  88.                             )
  89.                 )
  90.               )
  91.               (progn                        ; clipped
  92.                 (setq pl    (entget (dxf 340 (entget ent)))
  93.                       plist (vla-get-coordinates
  94.                               (vlax-ename->vla-object (dxf -1 pl))
  95.                             )
  96.                       plist (vlax-safearray->list
  97.                               (vlax-variant-value plist)
  98.                             )
  99.                       n            0
  100.                       pl    nil
  101.                 )
  102.                 (repeat        (/ (length plist) 2)
  103.                   (setq        xy (trans (list (nth n plist) (nth (1+ n) plist))
  104.                                   3
  105.                                   2
  106.                            )
  107.                         xy (trans xy 2 1)
  108.                         xy (trans xy 1 0)
  109.                         pl (cons (car xy) pl)
  110.                         pl (cons (cadr xy) pl)
  111.                         n  (+ n 2)
  112.                   )
  113.                 )
  114.                 (setq plist (reverse pl))
  115.               )
  116.             )
  117.           )
  118.           (setq plist (ax:List->VariantArray plist))
  119.           (vla-Put-Closed
  120.             (vla-AddLightWeightPolyline
  121.               (vla-get-ModelSpace ad)
  122.               plist
  123.             )
  124.             :vlax-True
  125.           )
  126.         )
  127.       )
  128.     )
  129.   )
  130.   (if ss
  131.     (vla-put-mspace ad :vlax-false)
  132.   )                                        ; equal (command "._pspace"))
  133.   (princ)
  134. )

评分

参与人数 1D豆 +5 收起 理由
xshrimp + 5 很给力!经验;技术要点;资料分享奖!

查看全部评分

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

使用道具 举报

已领礼包: 22个

财富等级: 恭喜发财

发表于 2021-6-30 15:00:52 | 显示全部楼层
刚才有些需求,路过学习一下!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 22个

财富等级: 恭喜发财

发表于 2021-7-9 14:20:08 | 显示全部楼层
Love-Lisp方法可批量生成视口矩形框,但坐标不对。auva方法生成多段线框完成对应多边形视口,完美!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2022-12-15 18:56:11 | 显示全部楼层
这个太好了,实在是太实用,找了很久,找到了组织了,感谢auva方法,真的nice啊,多谢分享,赞一个
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2022-12-15 19:02:02 | 显示全部楼层
现在就是能否把整个布局空间的内容导出到模型空间,比如外部参考的图框,还有布局中的图例和说明等内容,就是把一个图框中的所有布局信息内容导入到模型中间,类似于CAD的布局输出模型,但是要能批量实现,用cad的这个功能有时会报错了,有没有插件直接导出的,一键生成
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-22 06:30 , Processed in 0.346255 second(s), 71 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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