FastFiber

Weer een nieuw probleem :) Kruisende lijnen...

Gestart door Raton, di 11 05 2004, 09:22:57

Vorige topic - Volgende topic

Raton

Hallo, ja ik moet jullie natuurlijk wel bezighouden dus daarom ben ik hier weer met een nieuw probleempje :). Ik hoop dat jullie met net zo goed kunnen helpen als met de leidingaanzichten :).

Nou goed, misschien heeft 1 van jullie wel eens gehoord van P&ID tekenen? P&ID staat voor Proces & Instrumentation Diagram en wordt veel toegepast in de procesindustrie (vandaar de voorgaande leidingaanzichten). P&ID's zijn logische schema's voor werktuigbouwkundige tekeningen. Net als electrische schema's voor printplaatsen e.d.

Leidingen worden hierin getekend als lijnen en het is meestal onvermijdelijk om kruisende lijnen te voorkomen. Wanneer in een P%ID lijnen elkaar kruisen zijn er 2 opties:

1. Met laat een stukje open (men hakt dus een stukje van 1 van de 2 lijnen af)

2. Men zet op 1 lijn een half cirkeltje (zodat de leiding er als het ware overheen loopt)

Nu wil ik voor deze 2 "onderbrekingen" een button gaan maken. Hij moet dus in eerste instantie steeds een lijn tekenen en zodra hij een andere lijn tegenkomt moet hij zeg maar "onderborken" worden.

Zelf dacht ik aan iets met een cirkel in combinatie met het trim commando. Ik weet echter niet of dit gaat werken.

Mochten er mensen zijn die het nog niet wisten:

Ik werk met AutoCADLT 2004


Met vriendelijke groet, Raton

Joop

Zelf gebruik ik bij het maken van P&ID's de volgende Lisp routine
;;;Onderbreken van horizontale/verticale leidingen

 (defun C:BI ()
   (setvar "cmdecho" 0)
   (setq oosn (getvar "osmode"))
   (setvar "osmode" 32)
   (setq bd 6)
   (setq intp 0)
   (while (not (listp intp))
     (initget 1 "Distance")
     (setq intp (getpoint "\nDistance/<Select intersection point>: "))
     (if (= intp "Distance")
(progn
 (setq old_bd bd)
 (initget 6)
 (setq
   bd (getreal (strcat "\nBreak distance <" (rtos bd) ">: "))
 )
 (if (not bd)
   (setq bd old_bd)
 )
 (setvar "userr5" bd)
)
     )
   )
   (if intp
     (progn
(setq bl (entsel "\nSelect line to break: "))
(setq bll (entget (car bl)))
(setq hk (angle (cdr (assoc 10 bll)) (cdr (assoc 11 bll))))
(setq p1 (polar intp hk (/ bd 2))
     p2 (polar intp (+ hk pi) (/ bd 2))
)
(setvar "osmode" 0)
(command ".break" bl "f" p1 p2)
     )
     (princ "\nNo valid point selected ")
   )
   (setvar "osmode" oosn)
   (setvar "cmdecho" 1)
   (princ)
 )
 (princ)

Ik heb deze routine nooit uitgebreid naar automatisch herkennen van kruisingen omdat de volgorde van tekenen niet uitkomt met de regels van onderbreken.
Citeer2. Men zet op 1 lijn een half cirkeltje (zodat de leiding er als het ware overheen loopt)
Dit is te realiseren door op de intersectie een arc van 180 graden te tekenen.

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

Raton

OK, zoals je zelf aan geeft is het een LISP Routine, deze werken niet onder de LT versie....

Ik moet het waarschijnlijk met Macro's doen tenzij iemand een andere oplossing heeft voor dit probleem....

Wat bedoel je ermee dat hij knooppunten niet automatisch herkent??? Dit moet hij namenlijk wel doen!

Dit is echt een lastig probleem volgens mij, gezien de weinige reacties.

Met vriendelijke groet,

Raton

julien

Dit is niet zo lastig, maar je bent sterk beperkt doordat je over een LT versie beschikt.

Anonymous

Ik heb geen ervaring met de LT versie, dus praat me even bij wat betreft de beperkingen. Bedoel je met macro's zoiets als menumacro's?

Natuurlijk is het mogelijk om met lisp automatisch een intersectie (kruising) te herkennen.
Afhankelijk van de tekenwijze van P&ID's teken je leidingen van de 1ste, 2de en 3de categorie. Ook heb je nog utility-leidingen zoals water, perslucht ensmeerolie.
Dan heb je nog instrumentatielijnen.
Regel 1: vertikale lijnen voor horizontale
Regel 2: hoogste cattegorie voor laagste
Regel 3: utility voor processleidingen
Regel 4: instrumentatie voor overige leidingen
Het probleem is het programmeren van deze regels. Maar alles is mogelijk, alleen wordt het tekenen dan merkbaar trager.
Stel je voor dat je een vertikale lijn over vijf horizontale tekent.
Ik zeg niet dat je dan even een kop koffie kan gaan drinken, maar toch...
Waarschijnlijk geldt dit ook voor VBA en macro's?

Joop

bart

met een macro bedoelt raton een menu regel

ik zie voor dit probleem in de lt versie geen oplossing (voor zover ik weet kan je hierin geen variable toekennen.)

met een lisp zou ik het als volgt oplossen

eerst alles gewoon tekenen daarna in  1 een keer alle kruispunten oplossen
waarbij je middels een aantal simpele regels de volgorde bepaal
1 middels de laagnamen

of de lijn met de kleinste hoek altijd knippen of iets dergelijks
Domme vragen bestaan niet.
Domme antwoorden wel.

m.vr. groet Bart

Joop

In AutoCAD Full Version is het mogelijk om in menu macro's (eenvoudige) lisproutines te gebruiken, evenals in button menu's.
Hoe zit dit in LT versies?
:?:
Joop
Een gelovig volger van
"de Sacrale Kunst van Luiheid",
zijn leider "Lisp" en acoliet "Script".

julien


Raton

Inderdaad, dit werkt helemaal niet in LT. Er is echt geen andere mogelijkheid zonder LISP routines???

Met vriendelijke groet,

Raton

Raton

Is er voor de rest niemand die mij een beetje op weg kan helpen???

Is het anders mogenlijk om lijnen te trekken tussen 2 bepaalde lijnen, en dat er dan automatisch aan het begin en het einde zegmaar 2 mm van af wordt gelaten???

Met vriendelijke groet,

Raton

Joop

In AutoCAD full version heb je nog de mogelijkheid om diesel te gebruiken (en dan bedoel ik niet de brandstof).
Kan dit ook binnen LT?

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

bart

autocad LT ondersteund in ieder geval simpele diesel in het menu

hoe ver ze hierin gaan weet ik ook niet  :?:
een kwestie van proberen waarschijnlijk
Domme vragen bestaan niet.
Domme antwoorden wel.

m.vr. groet Bart

Joop

Na een blik in de Help van AutoCAD op tabblad index keyword DIESEL moet ik zeggen dat de mogelijkheden nogal beperkt zijn. Je hebt er waarschijnlijk toch niets aan.
:(   :(

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


FastFiber