乐筑天下

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

[编程交流] Reactor for dwg close - how to

[复制链接]

33

主题

267

帖子

213

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
197
发表于 2022-7-6 11:21:43 | 显示全部楼层 |阅读模式
I am working on a reactor to set several things on dwg close. A little background is HERE.
 
The trouble I am having now is that it seems to do what it's supposed to, except it doesn't save the changes.
I have this as part of the S::STARTUP (I have a "mystartup" appended to it and saved in the acaddoc.lsp file - shared on our network)
 
Any help greatly appreciated.
 
  1. (defun Create_Close_Reactor() (vl-load-com) (if(not close:reactor)   (setq close:reactor     (vlr-editor-reactor nil       '((:vlr-beginClose . CloseReaction))))   ); end if (princ) ); end of Create_Close_Reactor(defun CloseReaction(args reac / tmp actDoc) (setq actDoc(vla-get-ActiveDocument       (vlax-get-acad-object)))  (vla-put-ActiveSpace actDoc 1)  (vla-ZoomExtents(vlax-get-acad-object))  (vla-put-ActiveLayer actDoc   (vla-Item(vla-get-Layers actDoc)"0"))   ;;(repeat 3(vla-PurgeAll actDoc)) ;;set ucs to world;; (vla-put-ActiveUCS doc   (vla-add (vla-get-usercoordinatesystems doc)     (vlax-3D-point '(0. 0. 0.))       (vlax-3D-point '(1. 0. 0.))         (vlax-3D-point '(0. 1. 0.)) "TempWord_UCS"))          (vla-Save actDoc) (princ) ); end of CloseReaction(Create_Close_Reactor)
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
438
发表于 2022-7-6 11:27:48 | 显示全部楼层
You do realize that you can never open a drawing without saving.
回复

使用道具 举报

33

主题

267

帖子

213

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
197
发表于 2022-7-6 11:29:33 | 显示全部楼层
 
Well no, I didn't...
 
But if I open a dwg, work on it, save it and close it, this reactor appears too make the changes before the close as it is supposed to (change to model space, zoom extents, set the ucs to world, etc - I can watch it do it)
but when I open the dwg again, it has not saved those changes??
I'm just not sure what I am missing here...
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 11:33:53 | 显示全部楼层
Hi Cary,
 
I might approach it like this:
 
  1. [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] CloseReactor [b][color=BLUE]nil[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vl-load-com[/color][/b][b][color=RED])[/color][/b] [i][color=#990099];; Lee Mac  ~  14.04.10[/color][/i] [b][color=RED]([/color][/b]  [b][color=RED]([/color][/b][b][color=BLUE]lambda[/color][/b] [b][color=RED]([/color][/b] data [b][color=BLUE]/[/color][/b] react [b][color=RED])[/color][/b]      [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] react            [b][color=RED]([/color][/b][b][color=BLUE]vl-some[/color][/b]              [b][color=RED]([/color][/b][b][color=BLUE]function[/color][/b]                [b][color=RED]([/color][/b][b][color=BLUE]lambda[/color][/b] [b][color=RED]([/color][/b] reactor [b][color=RED])[/color][/b]                  [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]eq[/color][/b] data [b][color=RED]([/color][/b][b][color=BLUE]vlr-data[/color][/b] reactor[b][color=RED])[/color][/b][b][color=RED])[/color][/b] reactor[b][color=RED])[/color][/b]                [b][color=RED])[/color][/b]              [b][color=RED])[/color][/b]              [b][color=RED]([/color][/b][b][color=BLUE]cdar[/color][/b]                [b][color=RED]([/color][/b][b][color=BLUE]vlr-reactors[/color][/b] [b][color=Blue]:vlr-editor-reactor[/color][color=RED])[/color][/b]              [b][color=RED])[/color][/b]            [b][color=RED])[/color][/b]          [b][color=RED])[/color][/b]        [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vlr-added-p[/color][/b] react[b][color=RED])[/color][/b]          [b][color=RED]([/color][/b][b][color=BLUE]vlr-remove[/color][/b] react[b][color=RED])[/color][/b]          [b][color=RED]([/color][/b][b][color=BLUE]vlr-add[/color][/b] react[b][color=RED])[/color][/b]        [b][color=RED])[/color][/b]        [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] react          [b][color=RED]([/color][/b][b][color=BLUE]vlr-editor-reactor[/color][/b] data            [b][color=RED]([/color][/b][b][color=BLUE]list[/color][/b]              [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] [b][color=Blue]:vlr-beginclose[/color][/b] [b][color=DARKRED]'[/color][/b]CloseCallBack[b][color=RED])[/color][/b]            [b][color=RED])[/color][/b]          [b][color=RED])[/color][/b]        [b][color=RED])[/color][/b]      [b][color=RED])[/color][/b]      [b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b]        [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vlr-added-p[/color][/b] react[b][color=RED])[/color][/b]          [b][color=#a52a2a]"\n** Reactor Activated **"[/color][/b]          [b][color=#a52a2a]"\n** Reactor Deactivated **"[/color][/b]        [b][color=RED])[/color][/b]      [b][color=RED])[/color][/b]      react    [b][color=RED])[/color][/b]   [b][color=#a52a2a]"Close-Reactor"[/color][/b] [b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] CloseCallBack [b][color=RED]([/color][/b]reactor arguments[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-put-ActiveSpace[/color][/b]   [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] doc [b][color=RED]([/color][/b][b][color=BLUE]vla-get-ActiveDocument[/color][/b]               [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] acad [b][color=RED]([/color][/b][b][color=BLUE]vlax-get-acad-object[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]             [b][color=RED])[/color][/b]   [b][color=RED])[/color][/b]   [color=Blue][b]acModelSpace[/b][/color] [b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-ZoomExtents[/color][/b] acad[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-put-ActiveLayer[/color][/b] doc   [b][color=RED]([/color][/b][b][color=BLUE]vla-item[/color][/b]     [b][color=RED]([/color][/b][b][color=BLUE]vla-get-layers[/color][/b] doc[b][color=RED])[/color][/b] [b][color=#a52a2a]"0"[/color][/b]   [b][color=RED])[/color][/b] [b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-put-ActiveUCS[/color][/b] doc   [b][color=RED]([/color][/b][b][color=BLUE]vla-add[/color][/b]     [b][color=RED]([/color][/b][b][color=BLUE]vla-get-usercoordinatesystems[/color][/b] doc[b][color=RED])[/color][/b]       [b][color=RED]([/color][/b][b][color=BLUE]vlax-3D-point[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=RED]([/color][/b][b][color=#009999]0.[/color][/b] [b][color=#009999]0.[/color][/b] [b][color=#009999]0.[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]         [b][color=RED]([/color][/b][b][color=BLUE]vlax-3D-point[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=RED]([/color][/b][b][color=#009999]1.[/color][/b] [b][color=#009999]0.[/color][/b] [b][color=#009999]0.[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]           [b][color=RED]([/color][/b][b][color=BLUE]vlax-3D-point[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=RED]([/color][/b][b][color=#009999]0.[/color][/b] [b][color=#009999]1.[/color][/b] [b][color=#009999]0.[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=#a52a2a]"TempWord_UCS"[/color][/b]   [b][color=RED])[/color][/b] [b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]not[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]eq[/color][/b] [b][color=#a52a2a]""[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-get-FullName[/color][/b] doc[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]   [b][color=RED]([/color][/b][b][color=BLUE]vla-saveas[/color][/b] doc [b][color=RED]([/color][/b][b][color=BLUE]vla-get-FullName[/color][/b] doc[b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
Here, the reactor function is a toggle, and can be toggled on and off whilst the drawing is open. The reactor will only save the drawing if the drawing has been saved previously.
 
Its untested, but hopefully should work for you.
 
Lee
回复

使用道具 举报

33

主题

267

帖子

213

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
197
发表于 2022-7-6 11:37:33 | 显示全部楼层
I'll give it a shot, thanks.
How do you toggle it (what command, I don't see how you did that...)?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 11:40:10 | 显示全部楼层
Issuing
 
  1. (CloseReactor)
 
Will toggle the reactor on and off
回复

使用道具 举报

33

主题

267

帖子

213

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
197
发表于 2022-7-6 11:40:59 | 显示全部楼层
I see. I don't understand it... but I see it
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
438
发表于 2022-7-6 11:46:30 | 显示全部楼层
Just add something simple...
 
  1. (defun c:Test (/) (CloseReactor))
回复

使用道具 举报

33

主题

267

帖子

213

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
197
发表于 2022-7-6 11:49:54 | 显示全部楼层
 
...so that would assign a normal command line command to the reactor toggle then? (so it didn't need to be written in parenthesis?)
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
438
发表于 2022-7-6 11:50:52 | 显示全部楼层
 
Correct.
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-6 02:39 , Processed in 0.448258 second(s), 72 queries .

© 2020-2025 乐筑天下

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