CADsite forum

AutoCAD => Autolisp => Topic gestart door: Vanilla Queen op ma 12 11 2018, 22:13:47

Titel: maatlijn met fields (opgelost)
Bericht door: Vanilla Queen op ma 12 11 2018, 22:13:47
Ik zou graag een lsp maken die meerdere fields in een maatlijn plaatst.
Maar er is blijkbaar een beperking in het aantal tekens dat men in zo een mtext van een maatlijn kan plaatsen.

Ik heb:
(setq naamliggerID (strcat "%<\\AcObjProp Object(%<\\_ObjId " liggerID ">%).TextString>%"))

(setq typeliggerID (strcat "%<\\AcObjProp Object(%<\\_ObjId " liggerID ">%).Parameter(120).UserVariable\>%"))


(setq tekst (strcat typeliggerID  " " naamliggerID " L=<>" ))

(command "dimlinear" pt1 pt2 "m" tekst pt3)

maar bij de uitvoering krijg ik een foutmelding bij "m"
zijnde: "dimension text too long"

Ik zou dit willen omzeilen door eerste de eerste field toe te voegen en hierna de tweede field.

Maar dan moet ik bij gegevens van een maatlijn andere gegevens kunnen toevoegen.
En dat kan ik helaas ook niet.
Titel: Re: maatlijn met fields
Bericht door: EddyBeerke op di 13 11 2018, 17:08:13
Citaat van: Vanilla Queen op ma 12 11 2018, 22:13:47
...
Maar er is blijkbaar een beperking in het aantal tekens dat men in zo een mtext van een maatlijn kan plaatsen.
Ik probeer net even te kijken hoeveel tekens ik kan doen...
Ik ben maar gestopt bij 2800 (twee duizend + twee honderd)
Moet kunnen dacht ik om jou droom te maken.
Misschien is lisp een beperking. Hoeveel karakters gebruik je?
Titel: Re: maatlijn met fields
Bericht door: Vanilla Queen op di 13 11 2018, 19:30:29
Ja, ik vermoed dat lisp de beperking is. Als ik het rechtstreeks ingeef is er geen probleem, maar als ik onderstaande doe dan loopt het fout.

(setq naamliggerID (strcat "%<\\AcObjProp Object(%<\\_ObjId " liggerID ">%).TextString>%"))

(setq typeliggerID (strcat "%<\\AcObjProp Object(%<\\_ObjId " liggerID ">%).Parameter(120).UserVariable\>%"))


(setq tekst (strcat typeliggerID  " " naamliggerID " L=<>" ))

(command "dimlinear" pt1 pt2 "m" tekst pt3)

Titel: Re: maatlijn met fields
Bericht door: Vanilla Queen op za 24 11 2018, 12:42:55
De beperking is zoals Eddybeerke aangeeft bij het programmeren in lisp.
Ik heb het omzeild door eerst de maatlijn te plaatsen en hierna deze te wijzigen door "tekst" .
Mijn probleem was dat ik natuurlijk niet wist hoe ik in lisp een maatlijn moet wijzigen.
Met onderstaande blijkt het goed te lukken.

(setq wijzigmaatlijn (ssname (ssget pt3) 0))
(setq vla-wijzigmaatlijn (vlax-ename->vla-object wijzigmaatlijn))
(vla-put-Textoverride vla-wijzigmaatlijn tekst)

Probleem dus opgelost.