乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 128|回复: 4

[编程交流] 从模型空间到布局的视口

[复制链接]

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2021-7-17 13:42:23 | 显示全部楼层 |阅读模式
嗨。我正在搜索aa lisp以在相同坐标下从模型空间创建新的Viewport布局(用户每次都会给出viwport比例)。
我在想两种方法来做到这一点。
1)在模型规范中选择一个矩形,该矩形出现在具有相同坐标的Viewport的Layout中。
2)指定模型中出现在具有相同坐标的Viewport的Layout中的区域。
我找到了LeeMac lisp代码ms2psV1-0.lsp但不完全是我正在搜索的
  1. ;;-------------------=={ Modelspace to Paperspace }==-------------------;;
  2. ;;                                                                      ;;
  3. ;;  This program allows the user to copy a selection of objects from    ;;
  4. ;;  Modelspace to Paperspace through an active viewport.                ;;
  5. ;;                                                                      ;;
  6. ;;  This functionality is similar to the standard CHSPACE command,      ;;
  7. ;;  however, this program will copy the selection of objects as         ;;
  8. ;;  opposed to moving the objects from Modelspace to Paperspace.        ;;
  9. ;;                                                                      ;;
  10. ;;  Upon issuing the command 'ms2ps' at the AutoCAD command-line, the   ;;
  11. ;;  user is prompted to make a selection of objects to copy.            ;;
  12. ;;                                                                      ;;
  13. ;;  Following a valid selection, the program will copy the objects to   ;;
  14. ;;  the active Paperspace layout, before performing the necessary       ;;
  15. ;;  matrix transformations to maintain the visual appearance of the     ;;
  16. ;;  objects as displayed through the active viewport.                   ;;
  17. ;;                                                                      ;;
  18. ;;  The program is compatible with rectangular & polygonal viewports,   ;;
  19. ;;  under all UCS & view settings, and with objects constructed in      ;;
  20. ;;  any UCS construction plane.                                         ;;
  21. ;;                                                                      ;;
  22. ;;  Note that the command is only available when a Paperspace Layout    ;;
  23. ;;  is set current, with a viewport active.                             ;;
  24. ;;                                                                      ;;
  25. ;;----------------------------------------------------------------------;;
  26. ;;  Author:  Lee Mac, Copyright © 2014  -  www.lee-mac.com              ;;
  27. ;;----------------------------------------------------------------------;;
  28. ;;  Version 1.0    -    2014-02-16                                      ;;
  29. ;;                                                                      ;;
  30. ;;  First release.                                                      ;;
  31. ;;----------------------------------------------------------------------;;
  32. (defun c:ms2ps ( / *error* ang doc enx idx lst mat nor scl sel )
  33.     (defun *error* ( msg )
  34.         (LM:endundo (LM:acdoc))
  35.         (if (not (wcmatch (strcase msg t) "*break,*cancel*,*exit*"))
  36.             (princ (strcat "\nError: " msg))
  37.         )
  38.         (princ)
  39.     )
  40.     (LM:startundo (LM:acdoc))
  41.     (cond
  42.         (   (= 1 (getvar 'tilemode))
  43.             (prompt "\nCommand only available in Paperspace.")
  44.         )
  45.         (   (= 1 (getvar 'cvport))
  46.             (prompt "\nPlease activate a viewport.")
  47.         )
  48.         (   (setq sel (ssget '((410 . "Model"))))
  49.             (repeat (setq idx (sslength sel))
  50.                 (setq lst (cons (vlax-ename->vla-object (ssname sel (setq idx (1- idx)))) lst))
  51.             )
  52.             (setq enx (entget (ssname (ssget "_X" (list '(0 . "VIEWPORT") (cons 69 (getvar 'cvport)))) 0))
  53.                   ang (cdr (assoc 51 enx))
  54.                   nor (cdr (assoc 16 enx))
  55.                   scl (/ (cdr (assoc 41 enx)) (cdr (assoc 45 enx)))
  56.             )
  57.             (setq mat
  58.                 (vlax-tmatrix
  59.                     (append
  60.                         (mapcar '(lambda ( a b ) (append a (list b)))
  61.                             (setq mat ;; The following is adapted from gile's WCS2PCS function:
  62.                                 (mxm
  63.                                     (list
  64.                                         (list (cos ang) (- (sin ang)) 0.0)
  65.                                         (list (sin ang)    (cos ang)  0.0)
  66.                                        '(0.0 0.0 1.0)
  67.                                     )
  68.                                     (mapcar (function (lambda ( v ) (vxs (trans v nor 0 t) scl)))
  69.                                        '(
  70.                                             (1.0 0.0 0.0)
  71.                                             (0.0 1.0 0.0)
  72.                                             (0.0 0.0 1.0)
  73.                                         )
  74.                                     )
  75.                                 )
  76.                             )
  77.                             (mapcar '+
  78.                                 (mxv mat (mapcar '- (cdr (assoc 17 enx))))
  79.                                 (vxs (cdr (assoc 12 enx)) (- scl))
  80.                                 (cdr (assoc 10 enx))
  81.                             )
  82.                         )
  83.                        '((0.0 0.0 0.0 1.0))
  84.                     )
  85.                 )
  86.             )
  87.             (foreach obj
  88.                 (vlax-invoke (setq doc (vla-get-activedocument (vlax-get-acad-object))) 'copyobjects lst
  89.                     (vla-get-block
  90.                         (vla-item
  91.                             (vla-get-layouts doc)
  92.                             (getvar 'ctab)
  93.                         )
  94.                     )
  95.                 )
  96.                 (vla-transformby obj mat)
  97.             )
  98.         )
  99.     )
  100.     (LM:endundo (LM:acdoc))
  101.     (princ)
  102. )
  103. ;; Matrix Transpose  -  Doug Wilson
  104. ;; Args: m - nxn matrix
  105. (defun trp ( m )
  106.     (apply 'mapcar (cons 'list m))
  107. )
  108. ;; Matrix x Matrix  -  Vladimir Nesterovsky
  109. ;; Args: m,n - nxn matrices
  110. (defun mxm ( m n )
  111.     ((lambda ( a ) (mapcar '(lambda ( r ) (mxv a r)) m)) (trp n))
  112. )
  113. ;; Matrix x Vector  -  Vladimir Nesterovsky
  114. ;; Args: m - nxn matrix, v - vector in R^n
  115. (defun mxv ( m v )
  116.     (mapcar '(lambda ( r ) (apply '+ (mapcar '* r v))) m)
  117. )
  118. ;; Vector x Scalar  -  Lee Mac
  119. ;; Args: v - vector in R^n, s - real scalar
  120. (defun vxs ( v s )
  121.     (mapcar '(lambda ( n ) (* n s)) v)
  122. )
  123. ;; Start Undo  -  Lee Mac
  124. ;; Opens an Undo Group.
  125. (defun LM:startundo ( doc )
  126.     (LM:endundo doc)
  127.     (vla-startundomark doc)
  128. )
  129. ;; End Undo  -  Lee Mac
  130. ;; Closes an Undo Group.
  131. (defun LM:endundo ( doc )
  132.     (while (= 8 (logand 8 (getvar 'undoctl)))
  133.         (vla-endundomark doc)
  134.     )
  135. )
  136. ;; Active Document  -  Lee Mac
  137. ;; Returns the VLA Active Document Object
  138. (defun LM:acdoc nil
  139.     (eval (list 'defun 'LM:acdoc 'nil (vla-get-activedocument (vlax-get-acad-object))))
  140.     (LM:acdoc)
  141. )
  142. ;;----------------------------------------------------------------------;;
  143. (vl-load-com)
  144. (princ
  145.     (strcat
  146.         "\n:: ms2ps.lsp | Version 1.0 | \\U+00A9 Lee Mac "
  147.         (menucmd "m=$(edtime,0,yyyy)")
  148.         " www.lee-mac.com ::"
  149.         "\n:: Type "ms2ps" to Invoke ::"
  150.     )
  151. )
  152. (princ)
  153. ;;----------------------------------------------------------------------;;
  154. ;;                             End of File                              ;;
  155. ;;----------------------------------------------------------------------;;

谢谢

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

18

主题

95

帖子

69

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
100
发表于 2021-7-17 19:16:21 | 显示全部楼层
像这样的事情,如果想要更多信息,请PM我。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2021-7-22 03:01:21 | 显示全部楼层
嗨,Bigal,你也有这种口齿不清吗?
回复

使用道具 举报

0

主题

1

帖子

2

银币

初来乍到

Rank: 1

铜币
0
发表于 2021-7-22 22:54:56 | 显示全部楼层
我可以,但有一点点自定义的东西,如制作矩形是基于已知的大小,布局有一个标题栏和mview是预先确定的大小。需要一个样本图纸看看。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-20 11:07:25 | 显示全部楼层
我也会对BIGAL提到的东西感兴趣。我一直在不同的论坛上查看代码,但是还没有找到可以将视图从一个块放置到布局并按数字排序的东西。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-1-31 12:43 , Processed in 0.213502 second(s), 73 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表