FastFiber

Lisproutine voor tekst met hoogte 1,25;2,5;3,5

Gestart door Markske, vr 27 01 2006, 13:18:28

Vorige topic - Volgende topic

Markske

Hoi,

is het mogelijk om een Lisp-routine te maken voor het schrijven van een tekst (D-text) waarbij de Layer, color, linetype, lineweight en TextStyle al bepaald zijn, maar waar alleen nog maar de vraag moet gesteld worden hoe groot de teksthoogte hoeft te zijn...

Layer = 18
Color = 7
Linetype = Continuous
Lineweight = Default
Textstyle = ISO (iso.shx)

De gevraagde hoogten:  1,25 ; 2,5 of 3,5

Alvast bedankt!!!

Groetjes,
Markske

HofCAD

Citaat van: Markske op vr 27 01 2006, 13:18:28
Hoi,

is het mogelijk om een Lisp-routine te maken voor het schrijven van een tekst (D-text) waarbij de Layer, color, linetype, lineweight en TextStyle al bepaald zijn, maar waar alleen nog maar de vraag moet gesteld worden hoe groot de teksthoogte hoeft te zijn...

Layer = 18
Color = 7
Linetype = Continuous
Lineweight = Default
Textstyle = ISO (iso.shx)

De gevraagde hoogten:  1,25 ; 2,5 of 3,5

Alvast bedankt!!!

Groetjes,
Markske

Beste Markske,

Zijn Color = 7, Linetype = Continuous en Lineweight = Default uitzonderingen op de eigenschappen van Layer 18?
Verder in een AutoLisp programma gebruik je niet het commando DTEXT, maar het commando TEXT.
Ook zal de programmeur moeten weten, of  het Startpoint, de justification, de Rotation angle en de tekstinhoud ook
altijd het zelfde zijn.
Als je tekst in modelspace plaatst, moet er dan ook rekening worden gehouden met de plotschaal?

Groetjes HofCAD CSI

ACADcadabra

Markske

Beste Markske,
Hoi HofCAD,

Zijn Color = 7, Linetype = Continuous en Lineweight = Default uitzonderingen op de eigenschappen van Layer 18?
Neen, Color = 7, Linetype = Continuous en Lineweight = Default zijn geen uitzonderingen op de eigenschappen van Layer 18

Verder in een AutoLisp programma gebruik je niet het commando DTEXT, maar het commando TEXT.
is TEXT ook single-lined??? Want ik zou liefst geen multi-lined text willen gebruiken...

Ook zal de programmeur moeten weten, of  het Startpoint, de justification, de Rotation angle en de tekstinhoud ook
altijd het zelfde zijn.
Startpoint zal variëren, Justification = bottom left, Rotation angle zal ook variëren, evenals de tekstinhoud

Als je tekst in modelspace plaatst, moet er dan ook rekening worden gehouden met de plotschaal?
Neen, daar is al rekening met gehouden, 1,25 ; 2,5 of 3,5 zijn de goeie hoogten om in Modelspace te zetten

Groetjes HofCAD CSI
Groetjes terug, Markske


bart

^C^C-STYLE;2_5-ISO;MXISO; 2.5;0.8;;;;^C^C'-layer;thaw;0_GEEL-2_5MMTEKST;;;m;0_GEEL-2_5MMTEKST;c;2;;;Dtext;s;2_5-ISO;j;_bl;

waarom een lisp een menumacro moet ook lukken
dit is een voorbeeld voor tekst 2.5 mm met een breedte factor van 0,8 op de laag 0_geel-2_5mmtekst

Domme vragen bestaan niet.
Domme antwoorden wel.

m.vr. groet Bart

Markske

Citaat van: bart op vr 27 01 2006, 14:03:55
^C^C-STYLE;2_5-ISO;MXISO; 2.5;0.8;;;;^C^C'-layer;thaw;0_GEEL-2_5MMTEKST;;;m;0_GEEL-2_5MMTEKST;c;2;;;Dtext;s;2_5-ISO;j;_bl;

waarom een lisp een menumacro moet ook lukken
dit is een voorbeeld voor tekst 2.5 mm met een breedte factor van 0,8 op de laag 0_geel-2_5mmtekst


ja, zulke macro's heb ik ook al, maar ik had het deze keer eens liever anders gezien:

Als je op het icoontje klikt, dat zou je de vraag moeten krijgen welke teksthoogte je wil gebruiken... meer niet.
De laag, style, enz. zou dan al automatisch goed moeten staan.

Grtz,
Markske

bart

Citaat van: Markske op vr 27 01 2006, 14:15:46
Citaat van: bart op vr 27 01 2006, 14:03:55
^C^C-STYLE;2_5-ISO;MXISO; 2.5;0.8;;;;^C^C'-layer;thaw;0_GEEL-2_5MMTEKST;;;m;0_GEEL-2_5MMTEKST;c;2;;;Dtext;s;2_5-ISO;j;_bl;

waarom een lisp een menumacro moet ook lukken
dit is een voorbeeld voor tekst 2.5 mm met een breedte factor van 0,8 op de laag 0_geel-2_5mmtekst


ja, zulke macro's heb ik ook al, maar ik had het deze keer eens liever anders gezien:



Als je op het icoontje klikt, dat zou je de vraag moeten krijgen welke teksthoogte je wil gebruiken... meer niet.
De laag, style, enz. zou dan al automatisch goed moeten staan.

Grtz,
Markske

maar wat jij wilt gebeurd hier ook je krijgt alleen geen vraag maar kan gelijk het punt prikken waar je 2.5 mm hoge tekst begint
(met drie van deze knopjes ben je klaar)
Domme vragen bestaan niet.
Domme antwoorden wel.

m.vr. groet Bart

Markske

Citaat van: bart op vr 27 01 2006, 14:56:57

maar wat jij wilt gebeurd hier ook je krijgt alleen geen vraag maar kan gelijk het punt prikken waar je 2.5 mm hoge tekst begint
(met drie van deze knopjes ben je klaar)

idd, je hebt dan drie van deze knopjes nodig... maar ik heb al een Toolbar met ong. 20 icoontjes  :(
daarom dacht ik om wat plaats te winnnen om er maar één knopje voor te gebruiken.
maar dit zal wel gaan lukken... want ik heb zo ergens het vermoeden dat HofCAD wel met 'n oplossing gaat komen  :wink:

Grtz,
Markske

HofCAD

#7
Citaat van: bart op vr 27 01 2006, 14:03:55
^C^C-STYLE;2_5-ISO;MXISO; 2.5;0.8;;;;^C^C'-layer;thaw;0_GEEL-2_5MMTEKST;;;m;0_GEEL-2_5MMTEKST;c;2;;;Dtext;s;2_5-ISO;j;_bl;
waarom een lisp een menumacro moet ook lukken
dit is een voorbeeld voor tekst 2.5 mm met een breedte factor van 0,8 op de laag 0_geel-2_5mmtekst

Beste Markske,

Ik ben het met de overwegingen van Bart wel eens.
Waarom gebruik je eigenlijk een teksthoogte van 1.25?
Volgens mij zit er tussen de teksthoogtes die je volgens de tekennormen moet gebruiken
steeds een wortel twee factor; dus 1.8, 2.5, 3.5, 5.0, 7.0 en 10.0.
Als je een net  programma voor je probleem wilt schrijven, dan zou het onderstaande je misschien
kunnen helpen.
Het uittesten dat moet je zelf even doen, en dan graag eventuele wensen  of fouten melden.

Groetjes HofCAD CSI


(defun TekstErr (msg)
(if (/= msg "Function cancelled") (princ (strcat "\nError: " msg)))
(setq msg nil)
(ResVarTekst)
(princ)
)
(defun ResVarTekst ()
(setvar "CLAYER" ~CLY)
(setvar "TEXTSTYLE" ~CSTY)
(setvar "TEXTSIZE" ~TSIZE)
(setvar "CECOLOR" ~CECOL)
(setvar "CELTYPE" ~CELT)
(setvar "CMDECHO" ~CMD)
(setq *error* olderr ~CLY nil ~CSTY nil ~TSIZE nil ~CECOL nil ~CELT nil ~CMD nil)
)
(defun c:tekst(/ p0 h ang tekst)
(setq olderr *error* *error* TekstErr
      ~CMD (getvar "CMDECHO")
      ~CSTY (getvar "TEXTSTYLE")
      ~TSIZE (getvar "TEXTSIZE")
      ~CLY (getvar "CLAYER")
      ~CECOL (getvar "CECOLOR")
      ~CELT  (getvar "CELTYPE")
)
(setvar "CMDECHO" 0)
(if (not (tblsearch "STYLE" "iso"))
(command "_STYLE" "iso" "isocp.shx" "0" "1" "0" "N" "N"))
;;;; (command "_STYLE" "iso" "iso.shx" "0" "1" "0" "N" "N" "N"))
(if (tblsearch "LAYER" "18")
(command "_LAYER" "T" "18" "ON" "18" "S" "18" "")
(command "_LAYER" "M" "18" "C" "7" "18" "L" "CONTINUOUS" "18" "")
)
(initget 1)
(setq p0 (getpoint "\nGeef het invoegpunt van de tekst:"))
(setq h (getreal "\nVoer een teksthoogte van 1.25, 2.5 of 3.5 in : "))
(while  (not (or (= h 1.25) (= h 2.5) (= h 3.5)))
(setq h (getreal "\nVoer een teksthoogte van 1.25, 2.5 of 3.5 in : ")))
(setq ang (getangle p0 "\nGeef de tekstrotatie <0>: "))
(if (= ang nil)(setq ang 0) (setq ang (* (/ ang pi) 180)))
(setq tekst (getstring T "\nVoer de tekst in: "))
(if (/= (strcase (getvar "CECOLOR")) "BYLAYER")(command "_COLOR" "ByLayer"))
(if (/= (strcase (getvar "CELTYPE")) "BYLAYER")(command "_LINETYPE" "S" "ByLayer" ""))
(setvar "TEXTSTYLE" "iso")
(command "_TEXT" "J" "BL" p0 h ang tekst)
(ResVarTekst)
(princ)
)

ACADcadabra

bart

Je kan er ook een flyout van maken dan zie je maar 1 knopje te gelijk

maar het maakt mij verder niets uit hoor als je graag een lispje wilt  :D
Domme vragen bestaan niet.
Domme antwoorden wel.

m.vr. groet Bart

WebRacer

Hoi markske,
ik maakte ook een versie, zodat uw keuze groter word.
heb mij beetje laten inspireren door HofCAD, maar ik denk dat er bij hem nog een ANGLE-fout in zit.
Je kan zoals je zelf wil het progje naar je hand zetten.
starten doe je met 'tekst' en als je het bij 'load application' - 'contents' plaatst zal het elke keer automatisch geladen worden.

(defun c:Tekst (/ hgt P0)
   (setvar "cmdecho" 0)
   (if (not (tblsearch "STYLE" "iso"))
      (command "_STYLE" "iso" "ISO" "0" "1" "0" "N" "N" "N"))
   (while  (not (or (= hgt 1.25) (= hgt 2.5) (= hgt 3.5)))
      (setq hgt (getreal "\nGeef de gewenste texthoogte <1.25 - 2.5 - 3.5> ")))
   (entmake (list (cons 0 "TEXT")
      Â  (cons 8 "19")    ;laagnaam
      Â  (cons 62 7)   Â Â  ;kleur
      Â  (cons 10 (setq P0 (getpoint "\nGeef het invoegpunt voor de text -> ")))
      Â  (cons 50 (getangle "\nGeef de rotatiehoek in: " P0))
      Â  (cons 1 (getstring "\nGeef de tekst in: "))
      Â  (cons 40 hgt)      ;texthoogte
      Â  (cons 7 "Iso")))   ;textstyle
   (setvar "cmdecho" 1)
   (princ)
)
(princ "\n'Tekst' met vaste hoogtes is geladen- olivier.hautekeete@telenet.be")(princ)


Bericht aan HofCAD : Foutje in je progje-> je laat een hoek berekenen, maar je rekend die niet om naar graden of radialen?
?

HofCAD

#10
Citaat van: WebRacer op zo 29 01 2006, 10:36:24
Hoi markske,
ik maakte ook een versie, zodat uw keuze groter word.
heb mij beetje laten inspireren door HofCAD, maar ik denk dat er bij hem nog een ANGLE-fout in zit.
Bericht aan HofCAD : Foutje in je progje-> je laat een hoek berekenen, maar je rekend die niet om naar graden of radialen?

Beste WebRacer,

Je hebt volkomen gelijk en daarom heb ik het bovenstaande programma aangepast.
Waarschijnlijk hebben we beiden ook nog een andere fout in ons programma zitten (zie bij styl).
Heeft Markske wel  het font Iso.shx, en heeft dit font wel de optie Vertical.
Is in je programma  (cons 62 7)      ;kleur wel gelukkig, daar layer 18
(niet 19)  reeds die kleur heeft.
Ook de bottom/left point justification en de spatie invoer mogelijkheid is er niet.
Daarom heb ik in het onderstaand programma een aantal aanpassingen gedaan o.a. naar het font isocp.shx,
en verder heb ik ook een error-handeling toegevoegd.
Zodat ook bij afbreken van het programma de Cmdecho herstelt wordt.
Indien Markske ook de Textstyle wil herstellen, moet hij deze als in mijn eerste programma
nog toevoegen.

Groetjes HofCAD CSI


(defun TekstErr2 (msg)
(if (/= msg "Function cancelled") (princ (strcat "\nError: " msg)))
(setq msg nil)
(ResVarTekst2)
(princ)
)
(defun ResVarTekst2 ()
(setvar "CMDECHO" ~CMD)
(setq *error* olderr ~CMD nil)
)
(defun c:Tekst2 (/ hgt P0)
   (setq olderr *error* *error* TekstErr
        ~CMD (getvar "CMDECHO")
   )
   (setvar "cmdecho" 0)
   (if (not (tblsearch "STYLE" "iso"))
   (command "_STYLE" "iso" "isocp.shx" "0" "1" "0" "N" "N"))
;;;; (command "_STYLE" "iso" "iso.shx" "0" "1" "0" "N" "N" "N"))
   (while  (not (or (= hgt 1.25) (= hgt 2.5) (= hgt 3.5)))
      (setq hgt (getreal "\nGeef de gewenste texthoogte <1.25 - 2.5 - 3.5> ")))
   (entmake (list (cons 0 "TEXT")
        (cons 8 "18")    ;laagnaam
        (cons 10 (setq P0 (getpoint "\nGeef het invoegpunt voor de text -> ")))
        (cons 11 p0)
        (cons 50 (getangle P0 "\nGeef de rotatiehoek in: "))
        (cons 1 (getstring T "\nGeef de tekst in: "))
        (cons 40 hgt)      ;texthoogte
        (cons 73 1) ;justification
        (cons 7 "Iso")))   ;textstyle
   (ResVarTekst2)
   (princ)
)
ACADcadabra

Markske

Hey,

Bedankt HofCAD & WebRacer voor de tijd en moeite die jullie in het schrijven van deze lispjes hebben gestoken. Het spijtige is nu dat ze mij voor een maand gedetacheerd hebben, en dat ik dus niet meer op m'n vaste plek zit.
Maar van zodra ik terug op ons hoofdkantoor zit ga ik gelijk jullie lispjes uitproberen.

Nogmaals bedankt voor jullie ondersteunende hulp :wink:

Groetjes,
Markske

FastFiber