CADsite

  • za 04 07 2020, 17:44:24
  • Welkom, gast
Log in of registreer jezelf.

Login met gebruikersnaam, wachtwoord en sessielengte
Geavanceerd zoeken  

Nieuws:

Pagina's: [1]   Omlaag

Auteur Topic: oude lisp routines actualiseren  (gelezen 1249 keer)

jean.vdb

  • forum groentje
  • **
  • Offline Offline
  • Berichten: 8
    • Bekijk profiel
oude lisp routines actualiseren
« Gepost op: di 12 05 2020, 15:13:46 »

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.
Gelogd

roy_043

  • forumverslaafde
  • ******
  • Offline Offline
  • Berichten: 1451
  • BricsCAD 18
    • Bekijk profiel
    • www.b-k-g.nl
Re: oude lisp routines actualiseren
« Reactie #1 Gepost op: do 14 05 2020, 11:24:29 »

Ik wil wel naar 1 of 2 dingen kijken.
Gelogd

jean.vdb

  • forum groentje
  • **
  • Offline Offline
  • Berichten: 8
    • Bekijk profiel
Re: oude lisp routines actualiseren
« Reactie #2 Gepost op: ma 08 06 2020, 14:00:06 »

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

Gelogd

jean.vdb

  • forum groentje
  • **
  • Offline Offline
  • Berichten: 8
    • Bekijk profiel
Re: oude lisp routines actualiseren
« Reactie #3 Gepost op: ma 08 06 2020, 14:07:08 »

Dag Roy,

Hierbij de resterende routines.

Mvg.

Jean
Gelogd

roy_043

  • forumverslaafde
  • ******
  • Offline Offline
  • Berichten: 1451
  • BricsCAD 18
    • Bekijk profiel
    • www.b-k-g.nl
Re: oude lisp routines actualiseren
« Reactie #4 Gepost op: di 09 06 2020, 09:52:58 »

Ik wil wel naar 1 of 2 dingen kijken.

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)
)
Gelogd

roy_043

  • forumverslaafde
  • ******
  • Offline Offline
  • Berichten: 1451
  • BricsCAD 18
    • Bekijk profiel
    • www.b-k-g.nl
Re: oude lisp routines actualiseren
« Reactie #5 Gepost op: di 09 06 2020, 10:07:57 »

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.
Gelogd

jean.vdb

  • forum groentje
  • **
  • Offline Offline
  • Berichten: 8
    • Bekijk profiel
Re: oude lisp routines actualiseren
« Reactie #6 Gepost op: di 09 06 2020, 16:28:42 »

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.
Gelogd
Pagina's: [1]   Omhoog