Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Embedded Dimscale Reactor

55 views
Skip to first unread message

Dan Allen

unread,
Jul 11, 2003, 6:27:48 PM7/11/03
to
Posted in the customer files newsgroup is a R14 drawing (saved from vanilla
2002) has an embedded reactor (maybe more) that changes the dimscale to 96
before saving, then resets it. I assume my drawing got 'infected' with this
reactor by inserting or xreffing another drawing. We don't do round-trip
drawing exchange and so I have no intention of maintaining the integrity of
any other add-on programs such as ADT or Land Desktop.

Using superpurge by Manusoft, I can remove the reactors (I'm not sure how it
works), but I'd rather develop a lisp routine that scans a drawing to see
what reactors are embedded, and then has options to delete. Any pointers on
reactor scanning & deleting would be helpful.

Thanks,

Dan


Mark Propst

unread,
Jul 14, 2003, 2:09:48 AM7/14/03
to
heres a start
just to see whats loaded

;;;From: Cliff Middleton (cmidd...@generalbroach.com)
;;;Date: 2001-09-19 09:38:14 PST
;;;Run this little doo-dad to see if there is an errant reactor you had
;;;forgotten to remove.

(defun c:reacs ()
(mapcar
'(lambda (reactors)
(mapcar
'(lambda (reactor)
(princ "\n")
(princ (vlr-reactions reactor))
)
(cdr reactors)
)
)
(vlr-reactors)
)
)

;my quickie

(defun ListAllReactors( )
(vlr-reactors)
)

(defun ListAllReactions()
(foreach r
(listAllReactors)
(print (car r))
(print (cdr r))
(vlr-reactions (cadr r))
)
)


;to get rid of
;(I think this was from help files, sorry to author if that's not correct)
;;;--------------------------------------------------------------;
;;; Function: CleanReactors
;;;--------------------------------------------------------------;
;;; Description: General utility function used for cleaning up
;;; reactors. It can be used during debugging, as
;;; well as cleaning up any open reactors before
;;; a drawing is closed.
;;;--------------------------------------------------------------;
(defun CleanReactors ()
(mapcar 'vlr-remove-all
'(:VLR-AcDb-reactor
:VLR-Editor-reactor
:VLR-Linker-reactor
:VLR-Object-reactor
:VLR-Sysvar-reactor
:VLR-Miscellaneous-reactor
)
)
)

not sure if there's specific issues with persistent reactors in removing
them. check the help.
good luck
hth
Mark

"Dan Allen" <al...@NoBcvSpamArch.com> wrote in message
news:9F15A15ED8BE77FD...@in.WebX.maYIadrTaRb...

Doug Broad

unread,
Jul 14, 2003, 8:35:20 AM7/14/03
to
Mark,
I believe will only work on LISP reactors in the current namespace, not on
1) separate namespace reactors, 2)VBA based reactors, and 3) ARX
based reactors.

Dan,

If you are using ADT in any part of the process, it automatically establishes
a default scale (which you can specify) and which you can change. You
must use the Documentation -> Drawing Setup command rather than the
dimscale variable to control the aspects of drawing scale in ADT. The
command name is actually: _AecDwgScaleSetup but I never type it in.

If you want to eliminate any aspect of ADT, including the smart architectural
objects, you will need to use AECOBJEXPLODE. That will eliminate the
dictionaries in the drawing that maintain the architectural information and will
explode all the custom objects to basic autocad linework.

I encourage you to try using the ADT methods if you continue to use ADT.

Doug


"Mark Propst" <nonentityatplanetkcdotcom> wrote in message
news:5D34D30673FAC088...@in.WebX.maYIadrTaRb...

Dan Allen

unread,
Jul 14, 2003, 11:40:47 AM7/14/03
to
Mark,

Thanks for the post, however c:reacs only returns the reactors I have in the
drawing:

((:VLR-sysVarChanged . BCV_REACTOR_SYSVARCHANGED) (:VLR-sysVarWillChange .
BCV_REACTOR_SYSARWILLCHANGE))
((:VLR-commandEnded . BCV_REACTOR_COMMANDENDED) (:VLR-commandWillStart .
BCV_REACTOR_COMMANDWILLSTART))

Perhaps as Doug indicates it is one of the following:


1) separate namespace reactors, 2)VBA based reactors, and 3) ARX based
reactors.

To respond to Doug's message, we don't use ADT or any arx based add-ons,
other than tweaks like acadx tabs and the AEC object enablers, which I
suppose are the culprits. There must be a dictionary in the drawing
containing the data the reactor is firing on. Perhaps I can erase the
dictionary and ignore the reactor?

Dan


"Mark Propst" <nonentityatplanetkcdotcom> wrote in message
news:5D34D30673FAC088...@in.WebX.maYIadrTaRb...

Luis Esquivel

unread,
Jul 14, 2003, 12:00:46 PM7/14/03
to
> There must be a dictionary in the drawing
> containing the data the reactor is firing on. Perhaps I can erase the
> dictionary and ignore the reactor?

Hi Dan,

Look if there is a data dictionary in the visual lisp reactors
(vlr-pers-dictname) or' "VL-REACTORS"

The other way is to look in the dictionaries and make a list, post it here,
so others can take a look.

Luis Esquivel

unread,
Jul 14, 2003, 12:55:07 PM7/14/03
to
> "AEC_DISP_REP_CONFIGURATIONS" "AEC_DISP_REP_SETS" "AEC_DISP_REPS"
> "AEC_DISPLAY_PROPS_DEFAULTS" "AEC_PROPERTY_SET_DEFS" "AEC_VARS"

> I suppose I should cycle through deleting each one till I find the
culprit.

I see, yes do that.


Dan Allen

unread,
Jul 14, 2003, 12:41:55 PM7/14/03
to
Luis,

Thanks - I'm short on time today to give this the attention it deserves, so
I'm probably misunderstanding how I should be looking for the dictionaries,
as:
Command: (vlr-pers-dictname)
"VL-REACTORS"

gives only that?

However I did use this code from acadx.com

;;;=========================================================================
=====
;;; listDictionaries
;;;
;;; Purpose
;;; Returns a list of all dictionaries defined in the current drawing
;;;=========================================================================
=====

(defun listdictionaries ()
(massoc 3 (entget (namedobjdict)))
)

to get this:

("ACAD_GROUP" "ACAD_LAYOUT" "ACAD_MLINESTYLE" "ACAD_PLOTSETTINGS"
"ACAD_PLOTSTYLENAME" "ACAD_WIPEOUT_VARS" "AcDbVariableDictionary"


"AEC_DISP_REP_CONFIGURATIONS" "AEC_DISP_REP_SETS" "AEC_DISP_REPS"
"AEC_DISPLAY_PROPS_DEFAULTS" "AEC_PROPERTY_SET_DEFS" "AEC_VARS"

"BNS_VARIABLES")

I suppose I should cycle through deleting each one till I find the culprit.

Dan


Doug Broad

unread,
Jul 14, 2003, 2:28:12 PM7/14/03
to
Dan,
To get rid of the behavior, given your drawing contents, you must use
AECOBJEXPLODE.


"Dan Allen" <al...@NoBcvSpamArch.com> wrote in message

news:81F285B4A71E32BC...@in.WebX.maYIadrTaRb...
> Luis,


Dan Allen

unread,
Jul 14, 2003, 3:43:59 PM7/14/03
to
"Doug Broad" <dbr...@earthlink.net> wrote in message
news:5D6F6775D7DA4F61...@in.WebX.maYIadrTaRb...

> Dan,
> To get rid of the behavior, given your drawing contents, you must use
> AECOBJEXPLODE.

Tried that:

Command: aecobjexplode
Unknown command "AECOBJEXPLODE". Press F1 for help.

Could it be a glitch with the enablers? I am constantly getting German
messages regarding demand loading of the enablers.

These are the arx files loaded (A2k):
Command: arx
Enter an option [?/Load/Unload/Commands/Options]: ?
Loaded Runtime Extension Programs:

acadapp.arx - MDI Aware.
acadvba.arx - MDI Aware.
acadxtabs.arx - MDI Aware.
acdblclkedit.arx - MDI Aware.
acdblclkeditpe.arx - MDI Aware.
acdim.arx - MDI Aware.
acdimdynprop.arx - MDI Aware.
aceplotx.arx - MDI Aware.
acetdcp.arx - MDI Aware.
acetfpth.arx - MDI Aware.
acetlodr.arx - MDI Aware.
acetutil.arx - MDI Aware.
achapi15.dbx - MDI Aware.
achlnkui.arx - MDI Aware.
acismobj15.dbx - MDI Aware.
acismui.arx - MDI Aware.
aclayerp.arx - MDI Aware.
aclyutil.arx - MDI Aware.
acmatch.arx - MDI Aware.
acmted.arx - MDI Aware.
acopm.arx - MDI Aware.
acpltstamp.arx - MDI Aware.
acspacetrans.arx - MDI Aware.
acstd.arx - MDI Aware.
actoday.arx - MDI Aware.
aecarchbase30.dbx - MDI Aware.
aecarchdachbase30.dbx - MDI Aware.
aecareacalculationbase30.dbx - MDI Aware.
aecbase30.dbx - MDI Aware.
aeccbase30.dbx - MDI Aware.
aecclb.dbx - MDI Aware.
aeclab.dbx - MDI Aware.
aeclac.dbx - MDI Aware.
aeclad.dbx - MDI Aware.
aeclb.dbx - MDI Aware.
aeclm.dbx - MDI Aware.
aecloader30.arx - MDI Aware.
aeclsc.dbx - MDI Aware.
aeclsd.dbx - MDI Aware.
aeclsda.dbx - MDI Aware.
aeclstb.dbx - MDI Aware.
aecluib.dbx - MDI Aware.
aecmodeler30.dbx - MDI Aware.
aecschedule30.dbx - MDI Aware.
aecscheduledata30.dbx - MDI Aware.
aecscheduledataarch30.dbx - MDI Aware.
aecstructurebase30.dbx - MDI Aware.
aecuibase30.arx - MDI Aware.
attedit.arx - MDI Aware.
cxfixcombos15.arx - MDI Aware.
doslib2k.arx - MDI Aware.
edittime.arx - MDI Aware.
fewlcaps.arx - MDI Aware.
fewlvar.arx - MDI Aware.
fscreen.arx - MDI Aware.
geom3d.arx - MDI Aware.
movebak.arx - MDI Aware.
objectdcl.arx - MDI Aware.
oleaprot.arx - MDI Aware.
preventlockerror.arx - MDI Aware.
rtext.arx - MDI Aware.
textedit.arx - MDI Aware.
units.arx - MDI Aware.
vl.arx - MDI Aware.
wipeout.arx - MDI Aware.

Doug Broad

unread,
Jul 14, 2003, 4:27:40 PM7/14/03
to
Dan,
I would suggest asking the Autodesk personnel on either the
ADT 3.3 or ADT 2004 newsgroup as the source of your
problem is probably the ADT enablers. If you are
receiving these drawings from a consultant, then ask
them to run AECOBJEXPLODE before they send the
drawings to you.

There is a registry hack that turns off the drawing scale
activity. I can't remember which registry key did it.

Can't help you with the German stuff.

Regards,
Doug

"Dan Allen" <al...@NoBcvSpamArch.com> wrote in message

news:FA7722818E769DDD...@in.WebX.maYIadrTaRb...

Josh

unread,
Jul 15, 2003, 11:50:49 AM7/15/03
to
Don't know about deleting the offending reactors but I developed this
routine to reset LDD dimscales when not in LDD.
All I did to discover this was read through the dictionaries with DBVIEW
until I found the offending dimscale.

(defun c:dimscale (/ a b dimscale)
(setq a (dictsearch (namedobjdict) "AEC_VARS"))
(if a
(progn
(setq b (dictnext (dxf -1 a) t))
(while (not (= (dxf 0 b) "AEC_VARS_DWG_SETUP"))
(setq b (dictnext (dxf -1 a)))
)
(setq
dimscale (getreal (strcat "\nEnter new value for DIMSCALE <"
(rtos (dxf 40 b))
">: "
)
)
)
(if (not dimscale)
(setq dimscale (dxf 40 b))
)
(setq b (entmod (elist b 40 dimscale)))
)
(progn
(setq
dimscale (getreal (strcat "\nEnter new value for DIMSCALE <"
(rtos (getvar "dimscale"))
">: ")
)
)
(if (not dimscale)
(setq dimscale (getvar "dimscale"))
)
)
)
(setvar "dimscale" dimscale)
(princ)
)
;extract data from dotted pair
(defun dxf (code elist) (cdr (assoc code elist)))
;change entity list contents if found otherwise add to list
(defun elist (el grp new)
(if (assoc grp el)
(subst (cons grp new) (assoc grp el) el)
(append el (list (cons grp new)))
)
)

The other thing I did was turn off in the registry LDD's automatic resetting
of dimscales.
The key name (for me) is
HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\R15.0\ACAD-138:409\Profiles\MapL
andDevelopmentDesktop\Preferences\AecBase
and then set DwgSetupDoAcadVars to 0.

Hope some of this helps.

Josh

"Dan Allen" <al...@NoBcvSpamArch.com> wrote in message

news:9F15A15ED8BE77FD...@in.WebX.maYIadrTaRb...

Dan Allen

unread,
Jul 16, 2003, 12:06:51 PM7/16/03
to
Robert,

Thanks for the tip, looks like there are other settings as well that I might
want to turn off. Any insight on what they do?

\Preferences\AecBase
ViewManagementSystemDiagnostics
GeometryDiagnostics
QuickOsnaps
ObjectRelationshipGraphDiagnostics
MaintainExplodedObjectBlockProps
DwgSetupDoZZblk
DwgSetupDoAcadVars
DwgSetupDoLispVars
QuickLayerManager

Preferences\AecUiBase
UseCommonPositionForSimilarDialogs
UseCommonViewerPositionForSimilarDialogs
ShowNonCurrentVerMsgForOpen
ShowPrevVerWarningForSave

Also, my quick test of deleting all the AEC dictionaries didn't work, they
are recreated at reopening of the drawing.

Dan

"R. Robert Bell" <NOT.r...@acadx.com> wrote in message
news:5EED4C1789F9BB32...@in.WebX.maYIadrTaRb...
> DwgSetupDoAcadVars=0
>
> in the profile's Preferences\AecBase branch.
>
> --
> R. Robert Bell, MCSE
> www.AcadX.com


>
>
> "Doug Broad" <dbr...@earthlink.net> wrote in message

> news:C130785440A3C4E6...@in.WebX.maYIadrTaRb...
> | Dan,

R. Robert Bell

unread,
Jul 16, 2003, 11:53:07 AM7/16/03
to
DwgSetupDoAcadVars=0

in the profile's Preferences\AecBase branch.

--
R. Robert Bell, MCSE
www.AcadX.com

"Doug Broad" <dbr...@earthlink.net> wrote in message

news:C130785440A3C4E6...@in.WebX.maYIadrTaRb...
| Dan,

R. Robert Bell

unread,
Jul 16, 2003, 12:54:15 PM7/16/03
to
I haven't bothered modifying the others, for fear of making the enabler
unhappy. ;-)


--
R. Robert Bell, MCSE
www.AcadX.com

"Dan Allen" <al...@NoBcvSpamArch.com> wrote in message

news:A9311D2F691FF13C...@in.WebX.maYIadrTaRb...

0 new messages