乐筑天下

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

[编程交流] 从模型空间t复制对象

[复制链接]

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 00:05:02 | 显示全部楼层
我很乐意帮忙,但现在没有太多时间来考虑这个问题——如果我有时间的话,可能在周末。
回复

使用道具 举报

10

主题

598

帖子

594

银币

初来乍到

Rank: 1

铜币
48
发表于 2022-7-6 00:08:25 | 显示全部楼层
你真的需要整整一分钟吗。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 00:11:46 | 显示全部楼层
 
.......
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 00:14:47 | 显示全部楼层
我花了一些时间来研究这个问题,并快速编写了以下草稿,但是该程序目前仅限于在viewtwist为零的视口中使用:
  1. [color=GREEN];; Modelspace to Paperspace  -  Lee Mac[/color]
  2. ([color=BLUE]defun[/color] c:ms2ps ( [color=BLUE]/[/color] doc idx lst mat org sel )
  3.    ([color=BLUE]cond[/color]
  4.        (   ([color=BLUE]=[/color] 1 ([color=BLUE]getvar[/color] 'tilemode))
  5.            ([color=BLUE]prompt[/color] [color=MAROON]"\nCommand only available in Paperspace."[/color])
  6.        )
  7.        (   ([color=BLUE]=[/color] 1 ([color=BLUE]getvar[/color] 'cvport))
  8.            ([color=BLUE]prompt[/color] [color=MAROON]"\nPlease activate a viewport."[/color])
  9.        )
  10.        (   ([color=BLUE]setq[/color] sel ([color=BLUE]ssget[/color] '((410 . [color=MAROON]"Model"[/color]))))
  11.            ([color=BLUE]repeat[/color] ([color=BLUE]setq[/color] idx ([color=BLUE]sslength[/color] sel))
  12.                ([color=BLUE]setq[/color] lst ([color=BLUE]cons[/color] ([color=BLUE]vlax-ename->vla-object[/color] ([color=BLUE]ssname[/color] sel ([color=BLUE]setq[/color] idx ([color=BLUE]1-[/color] idx)))) lst))
  13.            )
  14.            ([color=BLUE]setq[/color] mat
  15.                ([color=BLUE]vlax-tmatrix[/color]
  16.                    ([color=BLUE]append[/color]
  17.                        ([color=BLUE]mapcar[/color]
  18.                           '([color=BLUE]lambda[/color] ( a b )
  19.                                ([color=BLUE]append[/color] ([color=BLUE]mapcar[/color] '[color=BLUE]-[/color] ([color=BLUE]trans[/color] ([color=BLUE]trans[/color] a 0 2) 2 3) org) ([color=BLUE]list[/color] b))
  20.                            )
  21.                           '(
  22.                                (1.0 0.0 0.0)
  23.                                (0.0 1.0 0.0)
  24.                                (0.0 0.0 1.0)
  25.                            )
  26.                            ([color=BLUE]setq[/color] org ([color=BLUE]trans[/color] ([color=BLUE]trans[/color] '(0.0 0.0 0.0) 0 2) 2 3))
  27.                        )
  28.                       '((0.0 0.0 0.0 1.0))
  29.                    )
  30.                )
  31.            )
  32.            ([color=BLUE]foreach[/color] obj
  33.                ([color=BLUE]vlax-invoke[/color] ([color=BLUE]setq[/color] doc ([color=BLUE]vla-get-activedocument[/color] ([color=BLUE]vlax-get-acad-object[/color]))) 'copyobjects lst
  34.                    ([color=BLUE]vla-get-block[/color]
  35.                        ([color=BLUE]vla-item[/color]
  36.                            ([color=BLUE]vla-get-layouts[/color] doc)
  37.                            ([color=BLUE]getvar[/color] 'ctab)
  38.                        )
  39.                    )
  40.                )
  41.                ([color=BLUE]vla-transformby[/color] obj mat)
  42.            )
  43.        )
  44.    )
  45.    ([color=BLUE]princ[/color])
  46. )
  47. ([color=BLUE]vl-load-com[/color]) ([color=BLUE]princ[/color])
回复

使用道具 举报

17

主题

193

帖子

179

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
84
发表于 2022-7-6 00:17:35 | 显示全部楼层
这是我们以前在办公室使用的。
命令包括:
 
C2P=复制到纸面空间&M2P=移动到纸面空间
C2M=复制到模型空间&M2M=移动到模型空间
 
然而,它有这个“买我”的东西。
 
将所有内容放在一个文件夹中,该文件夹应列在autocad的支持文件夹中
SP2SP。LSP
sp2sp。dcl
SP2SP。拉链
回复

使用道具 举报

24

主题

147

帖子

123

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
120
发表于 2022-7-6 00:20:39 | 显示全部楼层
 
谢谢李抽出时间做这件事。以下是我的观察结果:
 
1) 可以让用户激活视口而不是终止命令吗?
2) 它不会提取所选实体。目前它正在复制整个区块(这是一件必备品)
3) 视口显示是否可以临时锁定?否则,如果用户在模型空间模式下放大,可能会弄乱图形。(安全功能)
4) 选择完成后,是否可以自动返回到图纸空间,然后关闭命令。
 
我不确定哪一个不能做到,但我还是想提一提,这样你们可以更好地做出决定。
 
Nod684:我不能使用你发布的代码,因为里面有一些版权的东西。谢谢你的帮助。
回复

使用道具 举报

24

主题

147

帖子

123

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
120
发表于 2022-7-6 00:22:12 | 显示全部楼层
嗨,李,
 
我看到你在网站上添加了MS2P。是否有可能添加我在第16篇文章中列出的一些愿望/要求。
回复

使用道具 举报

15

主题

243

帖子

228

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
75
发表于 2022-7-6 00:27:59 | 显示全部楼层
以下是如何锁定/解锁视口(vpObj)
(vla put DisplayLocked vpObj[:vlax true/:vlax false])
其中:vlax true锁定它,而:vlax false解锁它。
 
然后,要在lisp例程中在图纸空间和模型空间之间切换,可以按以下方式使用TILEMODE:
以下内容归功于Zorg:
  1. (defun c:mm( / )
  2. (command "_tilemode" "1")
  3. )
  4. (defun c:pm( / )
  5. (command "_tilemode" "0")
  6. )

 
 
不确定“提取”实体是什么意思。。。。
 
然后不是终止命令,而是允许用户选择视口。。。。你可以使用这个函数,由Lee Mac编写
  1. (defun c:vpon ( / d s )
  2.    (vl-load-com)
  3.    (if (setq s (ssget "_+.:S:E:L" '((0 . "VIEWPORT"))))
  4.        (progn
  5.            (setq d (vla-get-activedocument (vlax-get-acad-object)))
  6.            (vla-put-mspace d :vlax-true)
  7.            (vla-put-activeviewport d (vlax-ename->vla-object (ssname s 0)))
  8.        )
  9.    )
  10.    (princ)
  11. )
  12. (defun c:vpoff ( )
  13.    (vla-put-mspace (vla-get-activedocument (vlax-get-acad-object)) :vlax-false)
  14.    (princ)
  15. )

 
您可以将这些代码合并到Lee的完整例程中,为您自己的需要创建自定义版本。我不希望李根据你的需要修改他的完整程序,但如果这些升级比个人修改更多,那么他可能会!
我知道这也需要你付出一些努力,但我希望我给了你足够的领先优势,让你成功。
HTH公司
回复

使用道具 举报

24

主题

147

帖子

123

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
120
发表于 2022-7-6 00:30:01 | 显示全部楼层
bhull1985,
 
我要试试看。让我们看看我能用我有限的LISP知识做些什么。谢谢你的有用提示。
回复

使用道具 举报

15

主题

243

帖子

228

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
75
发表于 2022-7-6 00:31:53 | 显示全部楼层
不客气。
至少你可以找到要更换的零件,然后来这里询问如何更换
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-11 01:35 , Processed in 1.018255 second(s), 70 queries .

© 2020-2025 乐筑天下

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