Jump to content

Maybe I'm asking the wrong question... (re:DIMASZ)


Recommended Posts

Posted

re: DIMASZ

 

Change it at the command prompt and it makes a global change.

You can change it for the selected entities via the Properties dialog.

 

How do you change the dimasz of a single entity?

 

I've been digging around in here and it's not evident to me..

 

HELP??

Posted

I've finally found it in the Extended Entity Data.

 

 

Command: !a

((-1 . <Entity name: 7ee67528>) (0 . "DIMENSION") (5 . "185") (102 . 
"{ACAD_XDICTIONARY") (360 . <Entity name: 7ee67570>) (102 . "}") (102 . 
"{ACAD_REACTORS") (330 . <Entity name: 7ee675a0>) (102 . "}") (330 . <Entity 
name: 7ee65cf8>) (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (100 . 
"AcDbDimension") (2 . "*D2") (10 3.76647 4.90871 0.0) (11 5.39181 3.3427 0.0) 
(12 0.0 0.0 0.0) (70 . 102) (1 . "") (71 . 5) (72 . 1) (41 . 1.0) (42 . 
1.62534) (73 . 0) (74 . 0) (75 . 0) (52 . 0.0) (53 . 0.0) (54 . 0.0) (51 . 0.0) 
(210 0.0 0.0 1.0) (3 . "Standard") (100 . "AcDbOrdinateDimension") (13 5.39181 
4.90871 0.0) (14 5.39181 3.79786 0.0) (15 0.0 0.0 0.0) (16 0.0 0.0 0.0) (40 . 
0.0) (50 . 0.0) (-3 ("ACAD" (1000 . "DSTYLE") (1002 . "{") (1070 . 41) [b](1040 . 0.0777)[/b] (1002 . "}"))))

 

 

I do not know how to isolate this one item to even begin to try to change it.

 

How do I isolate (Assoc 1040 a) ??

Posted
I've finally found it in the Extended Entity Data.

 

 

Command: !a

((-1 . <Entity name: 7ee67528>) (0 . "DIMENSION") (5 . "185") (102 . 
"{ACAD_XDICTIONARY") (360 . <Entity name: 7ee67570>) (102 . "}") (102 . 
"{ACAD_REACTORS") (330 . <Entity name: 7ee675a0>) (102 . "}") (330 . <Entity 
name: 7ee65cf8>) (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (100 . 
"AcDbDimension") (2 . "*D2") (10 3.76647 4.90871 0.0) (11 5.39181 3.3427 0.0) 
(12 0.0 0.0 0.0) (70 . 102) (1 . "") (71 . 5) (72 . 1) (41 . 1.0) (42 . 
1.62534) (73 . 0) (74 . 0) (75 . 0) (52 . 0.0) (53 . 0.0) (54 . 0.0) (51 . 0.0) 
(210 0.0 0.0 1.0) (3 . "Standard") (100 . "AcDbOrdinateDimension") (13 5.39181 
4.90871 0.0) (14 5.39181 3.79786 0.0) (15 0.0 0.0 0.0) (16 0.0 0.0 0.0) (40 . 
0.0) (50 . 0.0) (-3 ("ACAD" (1000 . "DSTYLE") (1002 . "{") (1070 . 41) [b](1040 . 0.0777)[/b] (1002 . "}"))))

I do not know how to isolate this one item to even begin to try to change it.

 

How do I isolate (Assoc 1040 a) ??

 

 

Correct.

You could easily entmod it from there.

Posted

 

How do you change the dimasz of a single entity?

 

I may be wrong but I don't think you can change the arrowhead size of a single arrowhead in an associated dimension. If you want to change the size of both arrowheads you can use this.

(vlax-put-property obj 'Arrowheadsize [color=Red][i]newsize[/i][/color])

Posted

I am in water way over my head here...

I just realized that (Assoc 1040) only shows up IF the DIMASZ

has been changed from the default.

I have no idea how to get the entity list if it has not been changed...

 

In my above example: (Assoc 1040 a) returns nil

I cannot "get" anything after this in the entity list..

 

(-3 ("ACAD" (1000 . "DSTYLE")

 

 

ps: Sorry for not being clear..., I'm not trying to change one arrow head...

I'm actually wanting to change the DIMASZ of an Ordinate Dimension.

Posted

This thread actually relates to something I'm wanting to do

(from another thread..)

 

http://www.cadtutor.net/forum/showthread.php?t=46652

 

I'm way out my league even attempting to do this in VL...

I was trying to modify some existing code but had no idea how to do it..

 

I can't even do this in vanilla autolisp so I'm really begging for assistance...

Posted
I may be wrong but I don't think you can change the arrowhead size of a single arrowhead in an associated dimension. If you want to change the size of both arrowheads you can use this.

(vlax-put-property obj 'Arrowheadsize [color=Red][i]newsize[/i][/color])

I was thinking that too, but I read the following for Dimasz (per SysvDlg):

Controls the size of dimension line and leader line arrowheads. Also controls the size of hook lines.
Posted

I see this was sorted in a different thread

Posted
I see this was sorted in a different thread

 

Decided it was best to post in the original thread. I must have missed it the first time around.

Posted

Dimension overrides through AutoLISP are handled in Extended Data (XData), under the ACAD appname, here is some useful info if you want to approach it that way:

 

Art Cooney (artc@autodesk.com)
There's a description of the codes in the ObjectARX documentation (I've included
it below).  I don't think the DXF documentation explains the overrides.

Here's the description from the ObjectARX docs:

Dimension style overrides can be applied to any of the AcDbEntity types that
reference an AcDbDimStyleTableRecord.  These are:

AcDbAlignedDimension
AcDbRotatedDimension
AcDbDiametricDimension
AcDbRadialDimension
AcDb2LineAngularDimension
AcDb3PointAngularDimension
AcDbOrdinateDimension

AcDbLeader
AcDbFcf

Dimension overrides applied to an object of any of these classes are stored as
xdata under the "ACAD" appId in a special subsection. The subsection starts with
a group code 1000 (AcDb::kDxfXdAsciiString) with the string "DSTYLE", followed
by all the dimension override data bracketed inside a pair of group code 1002's
(AcDb::kDxfXdControlString) (the first being a "{" and the other a "}").
Dimension variables in general are called dimvars, and this data is commonly
called "per-entity dimvar overrides" or just dimvar overrides.

Within the group code 1002 brackets is a chain of dimvar group-code/data-value
resbuf pairs, one pair for each dimvar being overridden.
The first resbuf in each pair is the DXF group code for the dimvar, as found in
the Table below.  Since the group code is an integer it has a restype of
AcDb::kDxfXdInteger16 (group code 1070).
The second resbuf in each pair is the value for that dimvar.  Data values for
dimvars may be strings, integers, reals, or objectIds.  As with resbufs in
general, the value of the resbuf’s restype indicates how to read the data in the
resval.  Please refer to the Table below.

As an example, here is a dimension style override list that will override the
DIMTAD and DIMGAP variables. The list is shown in AutoLISP format with indenting
for clarity.

("ACAD"
   (1000 . "DSTYLE")
   (1002 . "{")
   (1070 . 77) (1070 . 1)
   (1070 . 147) (1000 .  0.2)
   (1002 . "}")

)

In this example the group code 77 is DIMTAD, which is overridden to be 1. Then
DIMGAP (group code 147) is set to 0.2.
The following code sample uses acutBuildList() to create this resbuf chain and
to set overrides for DIMTAD and DIMGAP on the entity pointed to by pEnt,
assuming pEnt points to an AcDbEntity of one of the types listed above and is
open for writing:

resbuf* pRb = acutBuildList(
       AcDb::kDxfRegAppName,      "ACAD",
       AcDb::kDxfXdAsciiString,   "DSTYLE",
       AcDb::kDxfXdControlString, "{",
       AcDb::kDxfXdInteger16,  77, AcDb::kDxfXdInteger16, 1,
       AcDb::kDxfXdInteger16, 147, AcDb::kDxfXdReal,      0.2,
       AcDb::kDxfXdControlString, "}",
       RTNONE);
Acad::ErrorStatus es = pEnt->setXdata(pRb);

acutRelRb(pRb);

It is very important the xdata you set onto an object have the proper sequence
of resbufs.  Each override must have both the DXF group code resbuf and the
associated value resbuf. In addition, the value must be the correct data type
(string, real, or int) and must be within the allowable range for that dimvar.
If any of these conditions are not met, AutoCAD may terminate. Also, the 1000
"DSTYLE" and the following 1002 "{" "}" set must be present, and there must only
be one set of all of these.

Remember that xdata is obtained and replaced on a per-appId basis. To modify any
dimension overrides, work with the complete list of xdata for the "ACAD" appId,
which may have other data, including other dimension overrides. So, be sure to
obtain whatever xdata may already be present for the "ACAD" appId (use the
object's xData() method with the string "ACAD"). Add or remove only the
dimension override information you need, making sure that if dimension override
information already exists you don't duplicate any of the xdata that's already
there (including the "DSTYLE" string and the 1002 "{" "}" bracket pairs). Place
new overrides in between the existing 1002 bracket pair, and put the complete
modified list back into the object via the object's setXData() method. If not
done correctly, AutoCAD may terminate.

Here is a table of all the DimStyleTableRecord dimvars, with their DXF group
codes, data types, and value ranges:

Group code  Dimension variable     Data type     Value range
3           DIMPOST                string        any
4           DIMAPOST               string        any
40          DIMSCALE               real          >= 0.0
41          DIMASZ                 real          >= 0.0
42          DIMEXO                 real          >= 0.0
43          DIMDLI                 real          >= 0.0
44          DIMEXE                 real          >= 0.0
45          DIMRND                 real          >= 0.0
46          DIMDLE                 real          >= 0.0
47          DIMTP                  real          >= 0.0
48          DIMTM                  real          >= 0.0
71          DIMTOL                 int           0 = off,  1 = on
72          DIMLIM                 int           0 = off,  1 = on
73          DIMTIH                 int           0 = off,  1 = on
74          DIMTOH                 int           0 = off,  1 = on
75          DIMSE1                 int           0 = off,  1 = on
76          DIMSE2                 int           0 = off,  1 = on
77          DIMTAD                 int           0 - 3
78          DIMZIN                 int           0 - 15
79          DIMAZIN                int           0 - 15            new
140         DIMTXT                 real          >= 0.0
141         DIMCEN                 real          any value
142         DIMTSZ                 real          >= 0.0
143         DIMALTF                real          >= 0.0
144         DIMLFAC                real          >= 0.0
145         DIMTVP                 real          >= 0.0
146         DIMTFAC                real          >= 0.0
147         DIMGAP                 real          any value
148         DIMALTRND              real          >= 0.0           new
170         DIMALT                 int           0 = off,  1 = on
171         DIMALTD                int           >= 0
172         DIMTOFL                int           0 = off,  1 = on
173         DIMSAH                 int           0 = off,  1 = on
174         DIMTIX                 int           0 = off,  1 = on
175         DIMSOXD                int           0 = off,  1 = on
176         DIMCLRD                int           0 - 256
177         DIMCLRE                int           0 - 256
178         DIMCLRT                int           0 - 256
179         DIMADEC                int           0 - 8            new
271         DIMDEC                 int           0 - 8
272         DIMTDEC                int           0 - 8
273         DIMALTU                int           1 - 8
274         DIMALTTD               int           0 - 8
275         DIMAUNIT               int           0 - 4
276         DIMFRAC                int           0 - 2            new
277         DIMLUNIT               int           0 - 4            new
278         DIMDSEP                int           (char) any char  new
279         DIMATMOVE              int           0 - 2            new
280         DIMJUST                int           0 - 4
281         DIMSD1                 int           0 = off,  1 = on
282         DIMSD2                 int           0 = off,  1 = on
283         DIMTOLJ                int           0 - 2
284         DIMTZIN                int           0 - 15
285         DIMALTZ                int           0 - 15
286         DIMALTTZ               int           0 - 15
288         DIMUPT                 int           0 = off,  1 = on
289         DIMATFIT               int           0 - 3            new
340         DIMTXSTY               objectId                       new
341         DIMLDRBLK              objectId                       new
342         DIMBLK                 objectId                       new
343         DIMBLK1                objectId                       new
344         DIMBLK2                objectId                       new
371         DIMLWD                 int           lineweights      new
372         DIMLWE                 int           lineweights      new

Posted
Dimension overrides through AutoLISP are handled in Extended Data (XData), under the ACAD appname, here is some useful info if you want to approach it that way:

 

Yoink!

 

I seem to remember Kerry saying something about this. I think it's only like that in newer versions, but I'm not 100%.

Posted
Yoink!

 

I seem to remember Kerry saying something about this. I think it's only like that in newer versions, but I'm not 100%.

 

Yeah, this may be one instance where VLISP is the way forward :)

Posted

Guys, Thanks much!

Posted
Guys, Thanks much!

:) Always happy to lend a hand.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...