yoin

Marco

Via stabiCAD kan ik automatisch een staatje met getallen genereren, maar wanneer ik dit handmatig wijzig moet ik de uitkomst van de waarden handmatig optellen en wijzigen. (het wijzigen van de waarden en uitkomst met StabicAD is soms erg lastig)
Ik wil wanneer ik een aantal waarden wijzig alle waarden via een lisp routine kunnen optellen en de bestaande uitkomst wijzigen in de aangepaste uitkomst.

Nou heb ik wel al een routine ergens vandaan weten te halen, maar dit werkt nog niet goed. Het optellen gaat niet helemaal goed en ik kan dit niet gebruiken voor alle lettertypen. Je kan een percentage aangeven, maar zoals uit het script blijkt is dit altijd 60%
Hebben jullie een idee hoe ik het wel goed werkend krijg?

(defun c:tekstel (/ ss1 el1 som prc)
  (setq ss1 (ssget) tel 0 som 0)
  (repeat (sslength ss1)
    (setq el1 (entget (ssname ss1 tel)))
    (if (= (cdr (assoc 0 el1)) "TEXT")
      (setq som (+ som (atof (cdr (assoc 1 el1)))))
    ) (setq tel (1+ tel))
  )
  (if (setq prc (getreal (strcat "\nPercentage van " (rtos som 2 4) " <60%>: "))) (setq prc (/ prc 100)) (setq prc 0.6))
  (if (= (sslength ss1) 1) (setq som (* som prc)))
  (setq enm (car (entsel "\nSelect text: ")))
  (command "change" enm "" "" "" "" "" "" (rtos som 2 0))
  (princ (rtos som 2 0))
  (if (= (sslength ss1) 1) (princ " = 60%"))
  (princ)
)

Alvast bedankt,
Marco

Kenny H

Beste Marco,

Ik ga ervan uit dat je die % niet gebruikt? Ofwel? Anders moet je me het maar laten weten.  8)
Heb ook eens met verschillende tekststijlen gewerkt en probleem is eruit. Volgens mij e!  :roll:
Heb de nauwkeurigheid eens op 3 gezet ipv 0, dit regel je hierdoor  (rtos som 2 3))  :wink:
Moest je nog vragen hebben mag je ze me zeker stellen!
Heb je nog zo van die leuke lispen?

(defun c:tekstel (/ ss1 el1 som prc)
  (setq ss1 (ssget) tel 0 som 0)
  (repeat (sslength ss1)
    (setq el1 (entget (ssname ss1 tel)))
    (if (= (cdr (assoc 0 el1)) "TEXT")
      (setq som (+ som (atof (cdr (assoc 1 el1)))))
    ) (setq tel (1+ tel))
  )
  (setq enm (car (entsel "\nSelect text: ")))
  (command "change" enm "" "" "" "" "" (rtos som 2 3))
  (princ (rtos som 2 3))
  (princ)
)


Mvg

Kenny
8) Volvo 4 Life 8)

HofCAD

Citaat van: Kenny H op di 26 06 2007, 19:01:59
Beste Marco,

Ik ga ervan uit dat je die % niet gebruikt? Ofwel? Anders moet je me het maar laten weten.  8)
Heb ook eens met verschillende tekststijlen gewerkt en probleem is eruit. Volgens mij e!  :roll:
Heb de nauwkeurigheid eens op 3 gezet ipv 0, dit regel je hierdoor  (rtos som 2 3))  :wink:
Moest je nog vragen hebben mag je ze me zeker stellen!
Heb je nog zo van die leuke lispen?

(defun c:tekstel (/ ss1 el1 som prc)
  (setq ss1 (ssget) tel 0 som 0)
  (repeat (sslength ss1)
    (setq el1 (entget (ssname ss1 tel)))
    (if (= (cdr (assoc 0 el1)) "TEXT")
      (setq som (+ som (atof (cdr (assoc 1 el1)))))
    ) (setq tel (1+ tel))
  )
  (setq enm (car (entsel "\nSelect text: ")))
  (command "change" enm "" "" "" "" "" (rtos som 2 3))
  (princ (rtos som 2 3))
  (princ)
)


Mvg

Kenny

Beste Kenny,

Moet je de regel

(command "change" enm "" "" "" "" "" (rtos som 2 3))

niet veranderen in

(command "change" enm "" "" "" "" "" "" (rtos som 2 3))

Met vriendelijke groet,
HofCAD CSI
ACADcadabra

Kenny H

Ewel HofCAD,

We hebben beide gelijk!  :wink:

Blijkbaar is mijn aanpassing van toepassing indien de tekststyle niet standaard is.
Want anders kun je uw tekstgrootte nog aanpassen via die change. Vandaar ook die extra enter!
Eens u werkt met een aangemaakte tekststyle is de tekstgrootte een vaste waarde.
Zou je dit eens willen testen HofCAD ?
Alvast bedankt!

(defun c:tekstel (/ ss1 el1 som prc enm1)
  (setq   ss1 (ssget)
   tel 0
   som 0
  )
  (repeat (sslength ss1)
    (setq el1 (entget (ssname ss1 tel)))
    (if   (= (cdr (assoc 0 el1)) "TEXT")
      (setq som (+ som (atof (cdr (assoc 1 el1)))))
    )
    (setq tel (1+ tel))
  )
  (setq   enm  (car (entsel "\nSelect text: "))
   enm1 (entget enm)
  )
  (if (= (cdr (assoc 7 enm1)) "Standard")
    (command "change" enm "" "" "" "" "" "" (rtos som 2 3))
    (command "change" enm "" "" "" "" "" (rtos som 2 3))
  )
  (princ (rtos som 2 0))
  (princ)
)
8) Volvo 4 Life 8)

HofCAD

Citaat van: Kenny H op wo 27 06 2007, 20:38:29
Ewel HofCAD,

We hebben beide gelijk!  :wink:

Blijkbaar is mijn aanpassing van toepassing indien de tekststyle niet standaard is.
Want anders kun je uw tekstgrootte nog aanpassen via die change. Vandaar ook die extra enter!
Eens u werkt met een aangemaakte tekststyle is de tekstgrootte een vaste waarde.
Zou je dit eens willen testen HofCAD ?
Alvast bedankt!

Ewel Kenny,

Je hebt gelijk dat als  je tekststijl een hoogte heeft ongelijk aan 0, dat je zowel
bij het tekenen van de tekst als bij het veranderen van de tekst met het
commando CHANGE je de hoogte niet  kan instellen of veranderen.
Mijn gebruikte tekststijl heeft altijd een variabele hoogte, omdat tekst in mijn
tekeningen nauwelijks voorkomt.
Ook omdat ik die tekstijl gebruik bij het bematen.
Als ik wil bematen in modelspace, dan hoef ik alleen de AutoCAD variabele Dimscale
aan te passen bij een verschaling.

Mijn fout:oops: bij het testen was dat ik de teksten achteraf van tekststijl heb veranderd
met PROPERTIES, en dan krijg je bij een tekststijl met een vaste hoogte (een beetje vreemd)
toch nog te mogelijkheid om de hoogte te veranderen.

Met vriendelijke groet,
HofCAD CSI

ACADcadabra