CADsite forum

AutoCAD => Autolisp => Topic gestart door: martijn op ma 22 10 2007, 16:15:11

Titel: Text width aanpassen
Bericht door: martijn op ma 22 10 2007, 16:15:11
Hallo,

Is er een manier om in een lispfile de textwidth aan te passen??
Bij sommige lettertypes kun je in het properties menu de textbreedte aanpassen, dit is niet bij elk lettertype mogelijk.
Ga je echter naar de text instellingen via format --> textstyle kun je de breedte wel aanpassen.
Nu is het zo dat we een standaard lettertype hebben dat we gebruiken en dit met een lispfile overal teksten neerzetten in een rechthoekje. Voor de mooi zou de tekst iets smaller moeten zijn. Dus vandaar mijn vraag. Is dit mogelijk en zo ja, hoe??

alvast bedankt,

Martijn




Titel: Re: Text width aanpassen
Bericht door: HofCAD op di 23 10 2007, 10:18:55
Citaat van: martijn op ma 22 10 2007, 16:15:11
Hallo,

Is er een manier om in een lispfile de textwidth aan te passen??
Bij sommige lettertypes kun je in het properties menu de textbreedte aanpassen, dit is niet bij elk lettertype mogelijk.
Ga je echter naar de text instellingen via format --> textstyle kun je de breedte wel aanpassen.
Nu is het zo dat we een standaard lettertype hebben dat we gebruiken en dit met een lispfile overal teksten neerzetten in een rechthoekje. Voor de mooi zou de tekst iets smaller moeten zijn. Dus vandaar mijn vraag. Is dit mogelijk en zo ja, hoe??
alvast bedankt,
Martijn

Beste Martijn,

Hoe je dit kan doen binnen blocks kan je lezen in
http://www.cadsite.be/smf/index.php/topic,1253.0.html
Heb je het overigens al geprobeerd met PROPERTIES?
Op dit moment kan ik niet aan je probleem werken,
omdat ik mijn vrije tijd geen AutoCAD ter beschikking heb.

Met vriendelijke groet,
HofCAD CSI uit Albanie.
Titel: Re: Text width aanpassen
Bericht door: martijn op wo 24 10 2007, 07:39:38
Ik kom er niet helemaal uit en heb daarom de lisp hier maar even geplaats.
Deze lisp file tekent een rechthoekjes met een door jouw aangegeven begin nummer en hierna kun je doorklikken voor opvolgende nummers. Zo nummeren wij onze plafond en wand panelen. Nu is het echter zo dat als we een standaard lettertype gebruiken wat we ook in de rest van de tekening gebruiken en we komen bij de 100-tallen dan komen de cijfer buiten het rechthoekje. Nu kunnen we de tekstbreedte aanpassen, maar ik weet niet hoe je dit in een lispfile gedaan kunt krijgen.
De textwidth en textheight hieronder in het rood lijken niets te doen in de lisp file. Iemand enig idee?


(defun c:pnl-k   ()
               ; get first number
 
  (setq prefix "P")
 
  (command ".layer""s""K11" "")
  (setq stnum (getint "\nStarting number? "))
  (setq label (strcat prefix (itoa stnum)))
  (setq incrnum 1)

  (command "textstyle" "18")
  (setq txtwidth 0.5)
  (setq txtht 50) 
  (setq placepoint (getpoint "\Select text location: "))
 

(command "text" placepoint "0" label)


; de object snap instellingen worden tijdelijk uitgeschakeld
   (setq osm (getvar "osmode"))
   (if (< osm 16384) (setvar "osmode" (+ osm 16384)))

  (setq pt1(cdr(assoc 10 (entget(entlast)))))
  (setq pt2(polar pt1 1.4 -50))
  (setq pt3(polar pt2 0.785398 212))
  (command "rectangle" pt2 pt3)

; de objectsnap wordt weer aangezet
  (setvar "osmode" osm)

  (setq stnum (+ stnum incrnum))
  (setq label (strcat prefix (itoa stnum)))
  (setq placepoint (getpoint "\Select text location: "))
  (while (/= placepoint nil)
    (command "text" placepoint "0" label)

; de object snap instellingen worden tijdelijk uitgeschakeld
   (setq osm (getvar "osmode"))
   (if (< osm 16384) (setvar "osmode" (+ osm 16384)))

(setq pt1(cdr(assoc 10 (entget(entlast)))))
  (setq pt2(polar pt1 1.4 -50))
  (setq pt3(polar pt2 0.785398 212))
  (command "rectangle" pt2 pt3)

; de objectsnap wordt weer aangezet
  (setvar "osmode" osm)

    (setq stnum (+ stnum incrnum))
    (setq label (strcat prefix (itoa stnum)))
    (setq placepoint (getpoint "\Select text location: "))
  )               ;end while
  (princ)
)               ; end defun
(prompt "\nType plafondnum to run. ")

Titel: Re: Text width aanpassen
Bericht door: WebRacer op wo 24 10 2007, 15:16:24
hoi, dag Martijn,
ik keek dit even na en deed enkele aanpassingen... zie gele teksten.
Dit programma kan anders en beter opgebouwd worden, maar ik liet het zoveel mogelijk in de oorspronkelijke staat staan.
Ik testte in acad 2008, bij mij werkt het ook als: de text-style aanwezig is en de laag K11
uw text-width zou je in uw text-style moeten plaatsen op 0.5..

(defun c:pnl-k   ()
; get first number   
  (setq prefix "P") 
  (command ".layer" "s" "K11" "")
  (setq stnum (getint "\nStarting number? "))
  (setq label (strcat prefix (itoa stnum)))
  (setq incrnum 1)
  (command "textstyle" "18")
  ;(setq txtwidth 0.5)
  (setq txtht 50) 
  (setq placepoint (getpoint "\Select text location: "))
  (command "text" placepoint txtht  "0" label)

; de object snap instellingen worden tijdelijk uitgeschakeld
   (setq osm (getvar "osmode"))
   (if (< osm 16384) (setvar "osmode" (+ osm 16384)))
  (setq pt1(cdr(assoc 10 (entget(entlast)))))
  (setq pt2(polar pt1 1.4 -50))
  (setq pt3(polar pt2 0.785398 212))
  (command "rectangle" pt2 pt3)

; de objectsnap wordt weer aangezet
  (setvar "osmode" osm)
  (setq stnum (+ stnum incrnum))
  (setq label (strcat prefix (itoa stnum)))
  (setq placepoint (getpoint "\Select text location: "))
  (while (/= placepoint nil)
    (command "text" placepoint txtht  "0" label)

; de object snap instellingen worden tijdelijk uitgeschakeld
    (setq osm (getvar "osmode"))
    (if (< osm 16384) (setvar "osmode" (+ osm 16384)))
    (setq pt1(cdr(assoc 10 (entget(entlast)))))
    (setq pt2(polar pt1 1.4 -50))
    (setq pt3(polar pt2 0.785398 212))
    (command "rectangle" pt2 pt3)

; de objectsnap wordt weer aangezet
   (setvar "osmode" osm)
   (setq stnum (+ stnum incrnum))
   (setq label (strcat prefix (itoa stnum)))
   (setq placepoint (getpoint "\Select text location: "))
  )               ;end while
  (princ)
)               ; end defun
(prompt "\nType pnl-k to run. ")
Titel: Re: Text width aanpassen
Bericht door: martijn op do 25 10 2007, 07:43:05
Bedankt voor de aanpassingen. Het zal vast wel beter kunnen, maar ik ben 'nog' niet echt thuis in lisp.
Het probleem is alleen zo alleen nog niet opgelost. Die textwidth aanpassen zou ik graag in de lispfile terug zien zodat ik dit niet hoef aan te passen in de properties.
Titel: Re: Text width aanpassen
Bericht door: Reinier op do 25 10 2007, 16:05:38
Citaat van: martijn op do 25 10 2007, 07:43:05
Bedankt voor de aanpassingen. Het zal vast wel beter kunnen, maar ik ben 'nog' niet echt thuis in lisp.
Het probleem is alleen zo alleen nog niet opgelost. Die textwidth aanpassen zou ik graag in de lispfile terug zien zodat ik dit niet hoef aan te passen in de properties.

Kun je commanda "ma" niet proberen?
Titel: Re: Text width aanpassen
Bericht door: bart op vr 26 10 2007, 10:05:13
mogelijk 1

aan het begin van de lisp gebruik je het commando -style en past de style naar wens aan.

aan het eind van het commando zet je de style weer standaard.

een foutafhandeling er omheen die de style voor je reset als je de lisp afbreekt en klaar is martijn

mogelijk 2

je maakt een extra textstyle aan (eventueel binnen de lisp)
en gebruikt deze om de text te plaatsen
aan het einde van de lisp  zet je de style weer terug
de textsyle kan je resetten met (getvar "textstyle")
zoals je nu ook met osmode doet