FastFiber

oude lisp routines actualiseren

Gestart door jean.vdb, di 12 05 2020, 15:13:46

Vorige topic - Volgende topic

jean.vdb

Beste,
Ik beschik over oude lisp routines voor kleine automatisaties binnen mijn CAD programma (Bricscad) die vroeger draaiden op AutoCad.
Blijkt dat deze routines nog deels werken maar er zijn automatisaties die mank lopen.
Durf ik vragen of iemand dit eens kan bekijken en een oplossing aanreiken ?
Het zou fantastisch zijn.
Alvast dank.

roy_043

Ik wil wel naar 1 of 2 dingen kijken.

jean.vdb

Dag Roy,

Bedankt voor uw antwoord.

Ik zal hierbij verschillende lisp routines bijvoegen, die allen min of meer dezelfde architectuur hebben.
Vooreerst moet ik eerst UDIST laden voor ik de andere lisp routines kan draaien.
Meestal moet ik ook mijn ESNAP mode (of OSMODE) uitdoen voor het correct werkt, anders worden punten gekozen die niet overeenkomen met wat zou moeten.

COORD is om een coördinatenlijst op te maken. Ik kan het één keer inladen en het werkt. Maar als ik een andere reeks wil opmaken naast de eerste geeft hij een error. Ik moet uit mijn tekening gaan, de UDIST en de COORD weer inladen, en dan werkt het weer voor één reeks.

AFSLHOUT en AFSLBETON is om een reeks blokjes (rond of vierkant) gelijkmatig te verdelen over een lijn met measure commando, maar met evenredige verdeling over de lijn. Dient om een afsluiting voor te stellen.
Bij opladen geeft het een quit - exit abort
HG1 en HG2 is denk ik hetselfde maar met een haagsymbool als block. Reageert zelfs niet.

RAAM en DEUR werkt enkel met ESNAP uit. En ik kan maar één van de twee laden. Eens geladen werkt het andere niet.
HEK hetzelfde.

MAAT en MAATONG is om een maat van een lijn centraal te plaatsen boven de lijn. Werkt ook nog goed alleen met ESNAP uit. MEt ESNAP aan gaat de bemating elders staan dan in het midden.

Kijk maar waar je tijd voor hebt, met gelijk welke hulp ben ik al verder. Liefst het eerst item COORD die het nuttigste is.

Alvast bijzondere dank voor uw welwillende medewerking

Jean


jean.vdb

Dag Roy,

Hierbij de resterende routines.

Mvg.

Jean

roy_043

Citaat van: roy_043 op do 14 05 2020, 11:24:29
Ik wil wel naar 1 of 2 dingen kijken.

Citaat van: jean.vdb op ma 08 06 2020, 14:00:06
Liefst het eerst item COORD dat het nuttigste is.

De BricsCAD Lisp API heeft een let functie. In COORD.lsp wordt de functiedefinitie van deze let functie overschreven: (setq let ...). Als je "let" vervangt door "letXY" (op 4 plaatsen) dan werkt de functie. De kwaliteit van de code is overigens matig te noemen.

(defun c:coord()
   (setq cmdecho (getvar "cmdecho"))
   (setvar "cmdecho" 0)
   (command "zoom" "a")
   (setq start (getpoint "Linker bovenhoek: ")) (terpri)
   (setq startx (car start)
         starty (cadr start)
         txtbr (cdr (assoc 41 (tblsearch "style" (getvar "textstyle")))))
   (setq txthgt (udist "Hoogte tekst" 1.75))
   (setq brlet (udist "Breedte kolom letters" (* txtbr txthgt 3.5)))
   (setq brcoor (udist "Breedte kolommen coordinaten" (* brlet 2.0)))
   (setq eindx (+ startx brlet brcoor brcoor))
   (setq eind (list eindx starty))
   (setq letx (+ startx (/ brlet 2.0)))
   (setq y (- starty (+ txthgt (/ txthgt 2.0))))
   (setq letXY (list letx y))
   (command "text" "c" letXY txthgt 100.0 "Pt")
   (setq xcx (+ brlet startx (/ brcoor 2.0)))
   (setq xc (list xcx y))
   (command "text" "c" xc txthgt 100.0 "X")
   (setq ycx (+ xcx brcoor))
   (setq yc (list ycx y))
   (command "text" "c" yc txthgt 100.0 "Y")
   (setq y (- y (+ txthgt txthgt)))
   (setq xcx (+ xcx (* txtbr txthgt 2.5)))
   (setq ycx (+ xcx brcoor))
   (setq txt (getstring "Letter: ")) (terpri)
   (while (/= txt "STOP")
      (setq letXY (list letx y))
      (command "text" "c" letXY txthgt 100.0 txt)
      (setq xc (list xcx y))
      (setq punt (getpoint "Punt: ")) (terpri)
      (setq puntx (rtos (car punt) 2 2))
      (setq punty (rtos (cadr punt) 2 2))
      (command "text" "r" xc txthgt 100.0 puntx)
      (setq yc (list ycx y))
      (command "text" "r" yc txthgt 100.0 punty)
      (setq y (- y (+ txthgt (/ txthgt 2))))
      (setq txt (getstring "Letter: ")) (terpri)
   )
   (setq y (+ y txthgt))
   (princ y)
   (command "zoom" "a")
   (command "line" start eind "")
   (command "offset" (* txthgt 2) (entlast) xc "")
   (setq eind (list startx y))
   (command "offset" "t" (entlast) eind "")
   (command "line" start eind "")
   (command "offset" brlet (entlast) yc "")
   (command "offset" brcoor (entlast) yc "")
   (command "offset" brcoor (entlast) yc "")
   (setvar "cmdecho" cmdecho)
)

roy_043

Citaat van: roy_043 op do 14 05 2020, 11:24:29
Ik wil wel naar 1 of 2 dingen kijken.

Het probleem met snap is op te lossen door de OSNAPCOORD variabele op 1 te zetten.

jean.vdb

Bedankt alvast voor de moeite.

De lisp routines zijn wel al ongeveer 30 jaar oud. Verklaart waarschijnlijk waarom ze ondermaats zijn.
Maar ze werken en ik heb er veel aan.

Vriendelijke groet.