|
发表于 2022-7-6 12:22:54
|
显示全部楼层
设置存储在字典中,您可以这样设置:
或者,您可以输入引线并将覆盖放入扩展数据(-3)DXF代码中:
- (entmake (list (cons 0 "LEADER")
- (cons 100 "AcDbEntity")
- (cons 100 "AcDbLeader")
- (cons 71 1)
- (cons 72 0)
- (cons 73 3)
- (cons 74 0)
- (cons 75 0)
- (cons 10 pt)
- (cons 10 pt1)
- (cons 10 (getpoint pt1 "\nSpecify Next Point"))
- (list -3
- (list "ACAD"
- (cons 1000 "DSTYLE")
- (cons 1002 "{")
- (cons 1070 41)
- (cons 1040 2.5)
- (cons 1002 "}")))))
此类组码的信息可在此处找到:
- 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
|
|