FastFiber

Gezocht: Veel GBKN tekeningen splitsen in 500x500x raster (Lisp?)

Gestart door t.freriks, wo 18 03 2009, 18:44:07

Vorige topic - Volgende topic

t.freriks

Heren,

wie o wie kan mij helepn aan een lisp routine waarmee ik bij GBKN (NL) Topo-tekeningen kan laten 'uitsnijden' in vierkanten van 500x500m, netjes gesneden, evt + kadertje, opgeslagen met x,y (linksonder) variabelen als bestandsnaam (x-y.dwg).

Het gaat ook nog eens om honderden tekeningen, dus als dat gebatched zou kunnen worden (alle tekeningen uit één map) zou het helemaal mooi zijn!  :mrgreen:

Thomas

Joop

Leuk probleem  :D

Zou je eens een tekening kunnen plaatsen?

Joop
Een gelovig volger van
"de Sacrale Kunst van Luiheid",
zijn leider "Lisp" en acoliet "Script".

t.freriks

Citaat van: Joop op do 19 03 2009, 09:19:11
Leuk probleem  :D

Zou je eens een tekening kunnen plaatsen?

Joop

Ik 'mag' geen echte GBKN uploaden, maar heb je hier iets aan?  :roll:

Thomas

HofCAD

Citaat van: t.freriks op wo 18 03 2009, 18:44:07
Heren,

wie o wie kan mij helepn aan een lisp routine waarmee ik bij GBKN (NL) Topo-tekeningen kan laten 'uitsnijden' in vierkanten van 500x500m, netjes gesneden, evt + kadertje, opgeslagen met x,y (linksonder) variabelen als bestandsnaam (x-y.dwg).

Het gaat ook nog eens om honderden tekeningen, dus als dat gebatched zou kunnen worden (alle tekeningen uit één map) zou het helemaal mooi zijn!  :mrgreen:

Thomas
Beste Thomas,

Maakt het veel uit waar het linker onderhoek ligt van het raster,
test daarom onderstaande Lisp uit.

(defun c:GBKN()
(command "_ZOOM" "E")
(command "_LAYER" "M" "RASTER" "C" "RED" "RASTER" "")
(setq extmin (getvar "EXTMIN") extmax (getvar "EXTMAX"))
(setq r (+ (fix (/ (+ (- (cadr extmax) (cadr extmin)) 50) 500)) 1))
(setq k (+ (fix (/ (+ (- (car extmax) (car extmin)) 50) 500)) 1))
(setq p0 (list (fix (- (+ (car extmin) (/ (- (car extmax) (car extmin)) 2)) (* k 250)))
(fix (- (+ (cadr extmin) (/ (- (cadr extmax) (cadr extmin)) 2))(* r 250)))))
(command "_PLINE" p0 "@500,0" "@0,500" "@-500,0" "C")
(setq e (entlast))
(command "_ARRAY" e "" "R" r k 500 500)
)

Als dit goed is, moet er o.a. nog zoiets als het express tool commando EXTRIM
geschreven worden en nog iets voor de export naar DWG's.

Met vriendelijke groet, HofCAD CSI.
ACADcadabra

t.freriks

#4
Citaat van: HofCAD op do 19 03 2009, 20:07:26

Beste Thomas,

Maakt het veel uit waar het linker onderhoek ligt van het raster,
test daarom onderstaande Lisp uit.

(...)

Als dit goed is, moet er o.a. nog zoiets als het express tool commando EXTRIM
geschreven worden en nog iets voor de export naar DWG's.

Met vriendelijke groet, HofCAD CSI.

HofCAD,

het is inderdaad belangrijk dat de kwadranten op het 500x500 raster vallen. Ik heb daarom vanavond geprobeerd je lisp te begrijpen en dat is behoorlijk gelukt (mbv Google, want ik had geen idee wat car, cadr, fix etc. betekend)! M'n eerste scriptje is dus gebaseerd op die van jou, maar wel helemaal herschreven (ik moet dus iedere functie opzoeken met Google of in dit forum, maar ik leer veel :P):


(defun c:GBKN()
;Raster van 500 units tekenen over een bestaande tekening

;ff OSNAP herinneren en uitzetten
(setq oldsnap (getvar "osmode"))
(setvar "osmode" 0)

(command "_ZOOM" "E")
(command "_LAYER" "M" "RASTER" "C" "RED" "RASTER" "")

;set uitersten van de tekening
(setq extmin (getvar "EXTMIN") extmax (getvar "EXTMAX"))

;afronden
(setq xmin (* (fix (/ (car extmin) 500)) 500))
(setq ymin (* (fix (/ (cadr extmin) 500)) 500))
(setq xmax (* (fix (/ (+ (car extmax) 500) 500)) 500))
(setq ymax (* (fix (/ (+ (cadr extmax) 500) 500)) 500))

;set linksonder, rechtsonder, rechtsboven en linksboven
(setq lo (list xmin ymin))
(setq ro (list xmax ymin))
(setq rb (list xmax ymax))
(setq lb (list xmin ymax))

;test omranding
;(command "_PLINE" lo ro rb lb "C")

;r = aantal rijen, k= aantal kolommen
(setq r (/ (- ymax ymin) 500))
(setq k (/ (- xmax xmin) 500))

;kwadranten tekenen, vanaf hier gejat van HofCAD!
(command "_PLINE" lo "@500,0" "@0,500" "@-500,0" "C")
(setq e (entlast))
(command "_ARRAY" e "" "R" r k 500 500)

;OSNAP weer terugzetten
(setvar "osmode" oldsnap)
)


Hij is zeker niet zo compact opgezet als die van jou, maar het werkt en belangrijker: ik begrijp hem!

Nu komt het zwaarste probleem:
- ieder kwadrant van 500x500m kopieren naar een leeg bestand (Acadiso.dwt)
- alles om het vierkant (in de nieuwe tekening) extrimmen (mijn ervaring is dat dat niet altijd netjes gaat)
- opslaan met als bestandsnaam x,y.dwg (linksonder, x en y zijn deelbaar door 500) + afsluiten
- doorgaan met het volgende kwadrant...

Kun je me nog verder op weg helpen? Dan ga ik morgenavond weer zitten puzzelen...

PS, de originele tekeningen kunnen nogal zwaar zijn (van 0,5 tot 30Mb) dus het lijkt me niet verstandig om steeds 'alles'  om één kwadrant weg te snijden en dan opslaan, dat wordt veel te traag. beter lijkt het me ieder kwadrant te kopiëren naar een lege tekening...

Thomas

Joop

Opmerking:

' is een afkorting voor list zoals in
(setq Lijst '(a b c))
lisp denkt dus dat dit een programmaregel is

Voor commentaar gebruik ; zoals in
;;; dit is een kommentaar
;; maar dit ook
; en dit idem dito

Voor meer informatier zie  http://www.cadsite.be/lisp/lisp.php
Een gelovig volger van
"de Sacrale Kunst van Luiheid",
zijn leider "Lisp" en acoliet "Script".

t.freriks

Citaat van: Joop op vr 20 03 2009, 07:27:47
Opmerking:

' is een afkorting voor list zoals in
(setq Lijst '(a b c))
lisp denkt dus dat dit een programmaregel is

Voor commentaar gebruik ; Voor meer informatier zie  http://www.cadsite.be/lisp/lisp.php

Goeie tip! ik heb het aangepast en weer wat geleerd...  :mrgreen:

Thomas

Reimer

Voor het opslaan kun je misschien gebruik maken van Wblock. Maak eerst de blokken 500x500 aan in je tekening en sla deze vervolgens op mbv -Wblock.

Reimer

Joop

Beste Thomas,

Probeer deze routine uit en laat even weten of het werkt, en waarom niet. :wink:
De resulterende tekeningen moeten nog opgeschoond worden

De routine kan als stand alone gebruikt worden maar ook met Babe.
BaBe is een Batch Bewerkings programma.
Babe is hier te downloaden:
      http://www.cadsite.be/tips/BaBe.zip

Lees de bijgevoegde handleiding goed door en zoek hier op de site bij eventuele problemen.
Kom je er dan nog niet uit, och, dit is ten slotte een forum, niet waar? :D :D

Succes,

Joop
Een gelovig volger van
"de Sacrale Kunst van Luiheid",
zijn leider "Lisp" en acoliet "Script".


t.freriks

Citaat van: Joop op zo 22 03 2009, 21:14:55
Beste Thomas,

Probeer deze routine uit en laat even weten of het werkt, en waarom niet. :wink:
De resulterende tekeningen moeten nog opgeschoond worden
(...)

Joop

Joop, we zijn geweldig op weg! Ik heb de raster lisp van HofCAD eerst even gedraaid, om goed te zien wat hij pakt, maar dat ziet er heel netjes uit!
Nu moet het ge-exporteerde bestand nog ge-extrimmed worden (en let op: extrim is niet voldoende, omdat naar blijkt er ook lijnen buiten het kwadrant kunnen vallen, dus alle moet ook in 4 delen ge-erased worden met een windo (geen corssing)

dus het volgende lijk mij noodzakelijk, in of na de routine van het maken van wblocks:
- open het wblock bestand
- EXTRIM hem op het raster kwadrant (zie bijlage)
- wis alles binnen 'LinksOnder' x-500,y+1000 t/m @1500,-500 (het gebied boven het kwadrant: Window)
- wis alles binnen 'LinksOnder' x+500,y+1000 t/m @500,-1500 (het gebied rechts van het kwadrant: Window)
- wis alles binnen 'LinksOnder' x-500 t/m @1500,-500 (het gebied onder het kwadrant: Window)
- wis alles binnen 'LinksOnder' x-500,y+1000 t/m @500,-1500 (het gebied links van het kwadrant: Window)


Maar het lukt mij niet eens om nogmaals alle gamaakte wblocks te openen. Wellicht is het ook beter om dat meteen na het maken van dat block te doen. iemand een idee?

Thomas



Reimer

Volgens mij moet je twee programma's maken.
Prog1 deelt de GBKN op in blokken van 500x500 en zet deze weg als aparte dwg's.
Prog2 opent een 500x500-dwg en verwijderd alles buiten de gewenste coordinaten. Dit programma kan m.b.v. BaBe op een hele groep bestanden worden losgelaten.

Voor het verwijderen van alle objecten buiten de gewenste coordinaten lijkt het mij handig om het volgende te doen:
- eerst extrim gebruiken
- daarna het commando Erase
- selecteer alles (ALL)
- deselecteer het gebied binnen je coordinaten (Remove)
- klaar


Uit mijn hoofd komt de erase-regel er dan zo uit te zien:
(command "Erase"  "ALl"  "Remove" "Crossing" "xxx,yyy" "xxx+500,yyy+500" "")
Controleer dit eerst even, aangezien ik hem uit mijn hoofd heb opgeschreven.

Reimer

t.freriks

hmmpfff... gaat iets te ver voor mij, ik krijg dit niet voor elkaar...

iemand?

Thomas

WebRacer

#13
Hallo

Ik weet niet of dit ondertussen opgelost werd, maar deze vlx voldoet aan uw vraag.
Je kan deze downloaden en testen, indien nog vragen kan je mij gerust contacteren.

dit forum kan blijkbaar geen vlx uploaden en downloaden, hernoem het bestand splits.txt naar Splits.vlx
via tools -- load application    inladen

MVG
?

t.freriks

Citaat van: WebRacer op ma 27 04 2009, 14:25:40
Hallo

Ik weet niet of dit ondertussen opgelost werd, maar deze vlx voldoet aan uw vraag.
Je kan deze downloaden en testen, indien nog vragen kan je mij gerust contacteren.

dit forum kan blijkbaar geen vlx uploaden en downloaden, hernoem het bestand splits.txt naar Splits.vlx
via tools -- load application    inladen

MVG

Weet je hoe ik hem kan opstarten?

Citaat van: WebRacer op vr 01 05 2009, 19:47:08
splits500 dacht ik

Hmmm... splits500 werkt niet, splits, splitsen ook niet. kan iemand dit vlx bestand lezen en eruit halen wat het opstart commando is? :cry: