乐筑天下

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

[编程交流] 将UCS设置为世界坐标

[复制链接]
cgv

3

主题

14

帖子

11

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 02:10:11 | 显示全部楼层 |阅读模式
你好
 
只是想知道是否有人知道是否有某种例程可以在图形关闭时将图形的UCS设置回世界?这可能吗?
 
谢谢
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 02:14:26 | 显示全部楼层
可以重新定义命令,使其运行一系列命令。
 
已经有一段时间了,像这样的内容需要保存为自动加载lisps区域的一部分
 
  1. (command "Undefine" "CLOSE")
  2. (defun c:CLOSE ()
  3. (command "ucs" "w")
  4. (command "Zoom" "E")
  5. (command "._CLOSE")
  6. )

 
而且http://www.afralisp.net/autolisp/tutorials/redefining-commands.php
回复

使用道具 举报

cgv

3

主题

14

帖子

11

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 02:22:11 | 显示全部楼层
Al,
 
我已经将LISP加载到启动中,但它似乎并没有将我的UCS设置为接近世界坐标。
回复

使用道具 举报

0

主题

99

帖子

99

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-6 02:25:38 | 显示全部楼层
  1. (command "Undefine" "CLOSE")
  2. (defun c:CLOSE ()
  3. (command "ucs" "w")
  4. (command "Zoom" "E")
  5. [color="red"](command "._qsave")[/color]
  6. (command "._CLOSE")
  7. )
回复

使用道具 举报

cgv

3

主题

14

帖子

11

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 02:27:38 | 显示全部楼层
贾迪亚拉,
 
有没有办法让绘图询问是否保存?否则,它只会自动保存图形。
 
谢谢
回复

使用道具 举报

0

主题

99

帖子

99

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-6 02:34:10 | 显示全部楼层
  1. (command "undefine" "close")
  2. (defun C:close ()
  3. (if (= 1 (getvar 'dwgtitled))
  4.    (command "_.ucs" "w" "_.zoom" "e" "_.qsave" "_.close")
  5.    (command "_.close")
  6. )
  7. )
回复

使用道具 举报

cgv

3

主题

14

帖子

11

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 02:34:30 | 显示全部楼层
贾迪亚拉,
 
例行程序似乎仍然没有询问是否保存图形。它仍在关闭时自动保存。
 
再次感谢。
回复

使用道具 举报

0

主题

99

帖子

99

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-6 02:39:25 | 显示全部楼层
  1. (command "undefine" "close")
  2. (defun C:close ()
  3. (initget 7 "Yes No")
  4. (setq a (getkword "\nDo you want to save the drawing? (Yes / No) "))
  5. (if (= a "Yes")
  6.    (if (= 1 (getvar 'dwgtitled))
  7.      (command "_.ucs" "w" "_.zoom" "e" "_.qsave" "_.close")
  8.      (progn
  9.        (command "_.ucs" "w" "_.zoom" "e")
  10.        (initdia)
  11.        (command "_.save" "_.close")
  12.      )
  13.    )
  14.    (command "_.close" "n")
  15. )
  16. )
回复

使用道具 举报

cgv

3

主题

14

帖子

11

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 02:44:28 | 显示全部楼层
谢谢jdiala,但有时它似乎不同意关闭我的绘图。我想这是没有办法的。
 
我读过一些关于在“反应器”中使用命令的内容,但我不知道这些是如何工作的。
http://www.cadtutor.net/forum/showthread.php?46761-没有UCS命令调用的UCS世界
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 02:46:31 | 显示全部楼层
以下是使用绘图反应器的示例:
 
  1. [color=GREEN];; UCS Reactor  -  Lee Mac[/color]
  2. [color=GREEN];; Sets the active UCS to a UCS equivalent to WCS when the drawing is saved.[/color]
  3. ([color=BLUE]defun[/color] c:ucsr-on ( )
  4.    ([color=BLUE]if[/color] ([color=BLUE]=[/color] '[color=BLUE]vlr-dwg-reactor[/color] ([color=BLUE]type[/color] ucsr:reactor))
  5.        ([color=BLUE]if[/color] ([color=BLUE]vlr-added-p[/color] ucsr:reactor)
  6.            ([color=BLUE]princ[/color] [color=MAROON]"\nUCS reactor already running."[/color])
  7.            ([color=BLUE]progn[/color]
  8.                ([color=BLUE]vlr-add[/color] ucsr:reactor)
  9.                ([color=BLUE]princ[/color] [color=MAROON]"\nUCS reactor enabled."[/color])
  10.            )
  11.        )
  12.        ([color=BLUE]progn[/color]
  13.            ([color=BLUE]setq[/color] ucsr:reactor
  14.                ([color=BLUE]vlr-dwg-reactor[/color] [color=MAROON]"ucs-reactor"[/color]
  15.                   '(
  16.                        ([color=BLUE]:vlr-beginsave[/color]    . ucsr:beginsave)
  17.                        ([color=BLUE]:vlr-savecomplete[/color] . ucsr:savecomplete)
  18.                    )
  19.                )
  20.            )
  21.            ([color=BLUE]princ[/color] [color=MAROON]"\nUCS reactor enabled."[/color])
  22.        )
  23.    )
  24.    ([color=BLUE]princ[/color])
  25. )
  26. ([color=BLUE]defun[/color] c:ucsr-off ( [color=BLUE]/[/color] cmd )
  27.    ([color=BLUE]if[/color] ([color=BLUE]=[/color] '[color=BLUE]vlr-dwg-reactor[/color] ([color=BLUE]type[/color] ucsr:reactor))
  28.        ([color=BLUE]progn[/color]
  29.            ([color=BLUE]vlr-remove[/color] ucsr:reactor)
  30.            ([color=BLUE]setq[/color] ucsr:reactor [color=BLUE]nil[/color])
  31.            ([color=BLUE]setq[/color] cmd ([color=BLUE]getvar[/color] 'cmdecho))
  32.            ([color=BLUE]setvar[/color] 'cmdecho 0)
  33.            ([color=BLUE]command[/color] [color=MAROON]"_.ucs"[/color] [color=MAROON]"_w"[/color])
  34.            ([color=BLUE]setvar[/color] 'cmdecho cmd)
  35.            ([color=BLUE]if[/color] ([color=BLUE]tblsearch[/color] [color=MAROON]"ucs"[/color] [color=MAROON]"ucsr-ucs"[/color])
  36.                ([color=BLUE]vla-delete[/color] ([color=BLUE]vla-item[/color] ([color=BLUE]vla-get-usercoordinatesystems[/color] (ucsr:acdoc)) [color=MAROON]"ucsr-ucs"[/color]))
  37.            )
  38.            ([color=BLUE]princ[/color] [color=MAROON]"\nUCS reactor disabled."[/color])
  39.        )
  40.        ([color=BLUE]princ[/color] [color=MAROON]"\nUCS reactor not running."[/color])
  41.    )
  42.    ([color=BLUE]princ[/color])
  43. )
  44. ([color=BLUE]defun[/color] ucsr:beginsave ( obj arg )
  45.    ([color=BLUE]if[/color] ([color=BLUE]=[/color] [color=MAROON]""[/color] ([color=BLUE]setq[/color] ucsr:prevucs ([color=BLUE]getvar[/color] 'ucsname)))
  46.        ([color=BLUE]setq[/color] ucsr:prevucs ([color=BLUE]mapcar[/color] '[color=BLUE]getvar[/color] '(ucsorg ucsxdir ucsydir)))
  47.    )
  48.    ([color=BLUE]vla-put-activeucs[/color] (ucsr:acdoc)
  49.        ([color=BLUE]vlax-invoke[/color] ([color=BLUE]vla-get-usercoordinatesystems[/color] (ucsr:acdoc)) 'add
  50.            '(0.0 0.0 0.0)
  51.            '(1.0 0.0 0.0)
  52.            '(0.0 1.0 0.0)
  53.            [color=MAROON]"ucsr-ucs"[/color]
  54.        )
  55.    )
  56.    ([color=BLUE]princ[/color])
  57. )
  58. ([color=BLUE]defun[/color] ucsr:savecomplete ( obj arg )
  59.    ([color=BLUE]cond[/color]
  60.        (   ([color=BLUE]=[/color] 'str ([color=BLUE]type[/color] ucsr:prevucs))
  61.            ([color=BLUE]if[/color] ([color=BLUE]tblsearch[/color] [color=MAROON]"ucs"[/color] ucsr:prevucs)
  62.                ([color=BLUE]vla-put-activeucs[/color] (ucsr:acdoc)
  63.                    ([color=BLUE]vla-item[/color] ([color=BLUE]vla-get-usercoordinatesystems[/color] (ucsr:acdoc)) ucsr:prevucs)
  64.                )
  65.            )
  66.        )
  67.        (   ([color=BLUE]=[/color] '[color=BLUE]list[/color] ([color=BLUE]type[/color] ucsr:prevucs))
  68.            ([color=BLUE]vla-put-activeucs[/color] (ucsr:acdoc)
  69.                ([color=BLUE]apply[/color] '[color=BLUE]vlax-invoke[/color]
  70.                     ([color=BLUE]append[/color]
  71.                         ([color=BLUE]list[/color] ([color=BLUE]vla-get-usercoordinatesystems[/color] (ucsr:acdoc)) 'add)
  72.                         ucsr:prevucs
  73.                        '([color=MAROON]"ucsr-ucs"[/color])
  74.                     )
  75.                )
  76.            )
  77.        )
  78.    )
  79.    ([color=BLUE]setq[/color] ucsr:prevucs [color=BLUE]nil[/color])
  80.    ([color=BLUE]princ[/color])
  81. )
  82. ([color=BLUE]defun[/color] ucsr:acdoc [color=BLUE]nil[/color]
  83.    ([color=BLUE]eval[/color] ([color=BLUE]list[/color] '[color=BLUE]defun[/color] 'ucsr:acdoc '[color=BLUE]nil[/color] ([color=BLUE]vla-get-activedocument[/color] ([color=BLUE]vlax-get-acad-object[/color]))))
  84.    (ucsr:acdoc)
  85. )
  86. ([color=BLUE]vl-load-com[/color]) ([color=BLUE]princ[/color])

 
键入ucsr on以激活反应器,该反应器将在后台无声运行,以在保存图形时触发。
 
保存后,reactor回调函数将UCS设置为WCS等效项,然后在保存操作完成后恢复以前的UCS。
 
您可以随时使用ucsr off命令禁用反应堆。
 
但是,请注意,由于无法从reactor回调函数中评估命令调用,而且(据我所知)不可能使用Visual LISP将UCS设置为WCS,因此上述程序将UCS设置为与WCS等效的命名UCS。
 
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-10 22:19 , Processed in 0.633470 second(s), 72 queries .

© 2020-2025 乐筑天下

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