FastFiber

maatlijn met fields (opgelost)

Gestart door Vanilla Queen, ma 12 11 2018, 22:13:47

Vorige topic - Volgende topic

Vanilla Queen

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.

EddyBeerke

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?
Civil3d 2026, Blender 4.x gebruiker
Gebruiker sinds AutoCAD R12

http://eddylucas.c1.biz/
https://www.google.com/maps/contrib/109381066561676463628/photos/

Vanilla Queen

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)


Vanilla Queen

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.