FastFiber

Tekeningen die niet gelijk staan allemaal op cord. 0,0 brengen. (opgelost)

Gestart door Nico160775, ma 01 02 2010, 16:03:00

Vorige topic - Volgende topic

Nico160775

Ik heb een 1000-tal tekeningen maar deze staan niet allemaal op cord. 0,0.
Kan dit via een script automatisch op 0,0 gebracht worden?

Bij een move moet men een basispunt selecteren maar dan is het me nog niet automatisch gelukt de linkse onderhoek van de kader selecteren.

Merci...

cetacad

Is het kader een blok ?
Zo ja, wat is de naam (of zijn de namen indien er verschillende zijn) van dit blok.

Voor de kaders gebruik ik bijv. voor een A1 de naam "kader841x594" en voor een A0 "kader1189x841".

Als het insertionpoint van dit blok linksonder is, kan een lisp naar dit blok zoeken, het insertionpoint bepalen en vervolgens de hele inhoud van de tekening verplaatsen van het gevonden insertionpoint naar 0,0.

Fred


Nico160775

Het is een block maar de naam kan wisselen...
het insertpoint is wel linksonder...

cetacad

Citaat van: Nico160775 op ma 01 02 2010, 16:47:37
Het is een block maar de naam kan wisselen...
het insertpoint is wel linksonder...


Ik zoek een mogelijk om dit blok te filteren zonder deze handmatig te moeten selecteren.
1e mogelijkheid: Is er een gedeeltelijke overeenkomst tussen de namen van de blokken? Bij de namen dit ik gebruik is bijv. de tekst "kader" het filter.
2e mogelijkheid is: Staat er iets buiten het kader getekend of is het kader het uiterste wat op de tekening staat? Zo zou er van buiten de tekening naar binnen toe gezocht kunnen worden naar het eerst voorkomende blok. Dit zou dan het kader moeten zijn.
3e mogelijkheid: Handmatig het kader selecteren. Het verplaatsen kan dan wel automatisch verlopen.

Fred






Reimer

Indien er niets buiten het block staat kun je ook met EXTMIN de coordinaten opvragen van laatste punt links onderin de tekening.

Reimer

Nico160775

We gaan ervan uit dat de kader de eerste block is...

Het is zo dat er een block met de tekeningnr. moet ingebracht worden dit lukt allemaal met een script.
Maar nu is nog het probleem dat hij bij sommige tekeningen die block buiten de kader zet doordat die tekeningen niet op cord. 0,0 staan.


cetacad

#6
Citaat van: Nico160775 op ma 01 02 2010, 17:19:34
We gaan ervan uit dat de kader de eerste block is...

Als ik het goed begrijp is het dus niet nodig dat de tekening verplaatst wordt. Er moet alleen een block geplaatst worden. Op welke positie t.o.v. het kader moet dit block met tek.nr. ingebracht worden ?

Linksonder ?      EXTMIN geeft de hoek linksonder
Rechtsonder ?    X van EXTMAX + Y van EXTMIN geeft de hoek rechtsonder

Fred

Nico160775

Op cord -2,27 van de hoek rechtsonder.

Zou dat lukken, dat je ongeacht waar de kader staat de sticker met dwgnr. op de juiste plaats invoegd?

cetacad

Citaat van: Nico160775 op di 02 02 2010, 08:37:12
Op cord -2,27 van de hoek rechtsonder.

Zou dat lukken, dat je ongeacht waar de kader staat de sticker met dwgnr. op de juiste plaats invoegd?

Als er inderdaad niets buiten het kader getekend is, dan geven de variabelen EXTMIN en EXTMAX de uiterste punten van het kader aan.

(setq INSPUNT  (list   (-(nth 0 (getvar "EXTMAX"))2)  (+ (nth 1 (getvar "EXTMIN"))27)))

Fred



Nico160775

In mijn script gebruik ik gewoon vaste cord o die block in te voegen mag ik die vast cord vervangen door die regel die je me net gaf?

Of kan ik die alleen gebruiken in een lisp?

Want met scripts kan ik redelijk goed mijn plan trekken met lisp bijna niet...


cetacad

Dit is een regel uit lisp.
Ik ben niet bekend met scripts, dus ik weet niet of dit te combineren is.

Als je het block (welke in de tekening ingevoegd moet worden) op dit forum zet en aangeeft wat er met dit block moet gebeuren, kan ik er wel een lisp van maken.

Fred

Nico160775

De bedoeling is dat elke tekening een label krijgt met een nummer.
Deze nummer kan herleid worden uit een filename...
vb.       12345678910_00.dwg  wordt nummer in label 12345678910/000/00

In het verleden heb ik reeds een lisp gekregen om deze nummer in te vullen in het label.
Maar ik had toen nog het problemen omdat er een 1000 tal tekeningen zijn waarbij dit moet gebeuren en kan dit niet automatisch laten lopen over die tekeningen want kreeg babe niet opgestart.

Daarom ben ik opnieuw begonnen met een script maar daar kon ik de label niet op de juiste positie krijgen.
Als bijlage heb ik alle info die ik momenteel heb...

cetacad

Ik heb je destijds die lisp gestuurd. Uit je reactie begreep ik dat de lisp goed werkte. Als dat het geval is het is niet nodig babe te gebruiken.

Wanneer de regel :

(load "TEKNUM") (C:TEKNUM)

in Acad2009doc.lsp geplaatst wordt zal de lisp TEKNUM bij het openen van iedere tekening uitgevoerd worden. Het bestand Acad2009doc.lsp staat onder AutoCAD in de directory Support.



voorbeeld:


(load "TEKNUM") (C:TEKNUM)

; Next available MSG number is  104
; MODULE_ID ACAD2009doc_LSP_
;;;    ACAD2007DOC.LSP Version 1.0 for AutoCAD 2009
;;;
;;;    Copyright (C) 1994 - 2008 by Autodesk, Inc.
;;;
;;;    Permission to use, copy, modify, and distribute this software
;;;    for any purpose and without fee is hereby granted, provided


Nico160775


Nico160775

Waar in die lisp moet ik die regel toevoegen voor die block in te voegen?

yoin