Juergens-Workshops.de Forum
Absturz bei intelligenter Füllung - Druckversion

+- Juergens-Workshops.de Forum (https://forum.juergens-workshops.de)
+-- Forum: Corel Grafik Forum (https://forum.juergens-workshops.de/forumdisplay.php?fid=65)
+--- Forum: Corel Draw (https://forum.juergens-workshops.de/forumdisplay.php?fid=93)
+--- Thema: Absturz bei intelligenter Füllung (/showthread.php?tid=37861)

Seiten: 1 2 3 4


RE: Absturz bei intelligenter Füllung - norre - 01.03.2019

Hallo,
(01.03.2019, 17:22)wdreinheim schrieb: ... In meinem Fall kommt es aber häufig vor, daß Linien stumpf an ener anderen Linie enden müssen, um korrekt füllen zu können, also ohne Knoten an der anderen Linie (siehe Anlage). Die Funktion Kurven verbinden bietet dazu leider keine Möglichkeit.
jein, du kannst auch diese Objekte schließen, allerdings werden überstehende Kurven entfernt.
Wähle mal beide Kurven aus und probiere diese Einstellungen.
Das Ergebnis [attachment=20699]

Jetzt mal laut gedacht:
Wenn du alle Objekte auf eine zweite Ebene kopierst und nur auf diese Objekte (auch abschnittsweise)"Kurven verbinden" mit einer größeren Toleranz anwendest, sollten die offenen Kurven geschlossen werden und die durch die Funktion abgeschnittenen Kurven von der ersten Ebene ergänzt werden.
Wie das allerdings bei Bögen aussieht?????

(01.03.2019, 17:45)wdreinheim schrieb: ...weil möglicherweise schon in Autocad nicht präzise gearbeitet wurde...
Denke ich auch, nach meiner Erfahrung mit importierten Autocad Datein waren die Kurven zwar oft offen aber die Endknoten lagen eigentlich übereinander und waren so leicht automatisch zu schließen.
???Könnte man vielleicht die Autocaddatei in einer älteren Version abspeichern, vielleicht tut sich Corel dann leichter???


Gruß
Norre


RE: Absturz bei intelligenter Füllung - wdreinheim - 01.03.2019

Hallo Norre,
 
den ersten Vorschlag werde ich mal testen. 
 
Die Autocad-Datei ist eine Anlieferung von Dritten, leider habe ich keinen Einfluß auf die Art der Abspeicherung. Ich bin froh, daß ich sie in Coreldraw importieren kann.
 
Beste Grüße
WDReinheim


RE: Absturz bei intelligenter Füllung - Unkraut - 02.03.2019

Hallo WDReinheim,
würde es sich nicht lohnen,  die Testversion (30 Tage) von CorelCad 2019  herunter zu laden, um so vielleicht den Fehlern auf die Spur zu kommen oder um anders speichern zu können?

Viele Grüße, Chris


RE: Absturz bei intelligenter Füllung - wdreinheim - 02.03.2019

Hallo Chris, hallo Norre,
 
danke für den Hinweis auf Corelcad, aber ich denke, wir sind hier in einer Sackgasse. 
 
Noch mal von vorne: Das Problem für den Absturz liegt vermutlich in nicht geschlossenen Flächen, bei denen die intelligente Füllung versagt. Bei Betrachtung der ursprünglichen aus Autocad importierten DWG-Datei fällt auf, daß manche Umrisse nicht an einem benachbarten Umriss enden, sondern wenige Hundertstel mm vorher, es liegt also eine kleine Lücke vor (siehe in der Mitte des beigefügten Bildes).  Für die intelligente Füllung benötigt man aber keinen geschlossenen Umriß, es genügt, wenn die zu füllende Fläche allseitig von Umrissen begrenzt, also die kleine Lücke geschlossen ist.
 
[attachment=20700]
 
Im vorgenannten Fall ist dies wegen der Lücke nicht gegeben: Wenn ich das Kuchenstück oben links intelligent füllen möchte, wird wegen der Lücke der ganze obere Halbkreis mit gefüllt.  Wenn die Lücke geschlossen ist, passiert das nicht.  
 
M E würde es genügen, wenn die Lücke durch eine kurze gerade Linie mit dem nächsten Punkt auf der nächsten benachbarten Linie geschlossen wird. Dadurch entsteht eine geschlossene Fläche, die intelligent gefüllt werden kann.
 
Wünschenswert wäre ein Makro, das in der Zeichnung alle im Freien endenden Umrisse sucht und sie um eine gerade Linie verlängert, die an dem nächstliegenden Punkt (nicht Knoten) der nächsten Linie endet. Dabei entstehende Ungenauigkeiten können bei den wenigen Hundertstel mm in Kauf genommen werden.
 
Ich hoffe, daß ich das ganze klar genug beschrieben habe. Wenn nicht: Bitte rückfragen.
 
Beste Grüße und Dank für die bisherige Hilfe
WDReinheim


RE: Absturz bei intelligenter Füllung - norre - 02.03.2019

Hallo,
das Problem war schon klar.
Makro wäre natürlich ne tolle Sache da müssen die Makrospezialisten um @Koter ran.
Da er sich noch nicht gemeldet hat denke ich wird das nicht so einfach sein ??

Falls das mit dem Macro nicht geht hätte ich noch eine Idee.
Erstelle dir eine schmale Pfeilspitze,
diese Pfeilspitze weist du allen Kurven zu,
dann alle Umrisse in Objekte umwandeln ( weil, Pfeilspitzen schließen die Kurve nicht)
nun sollten die Kurven optisch geschlossen sein (schwarz) und sich füllen lassen.
[attachment=20701]

Gruß
Norre


RE: Absturz bei intelligenter Füllung - wdreinheim - 03.03.2019

Hallo Norre,
 
das mit der Pfeilspitze ist eine pfiffige Idee, sie funktioniert auch.  Allerdings entstehen auf diese Weise sehr viele winzig kleine geschlossene Flächen, die das ganze wieder stören.
 
Ich hoffe noch auf ein professionelles Makro.
 
Beste Grüße
WDReinheim


RE: Absturz bei intelligenter Füllung - koter - 04.03.2019

Hallo Wolfgang,

Das folgende Makro flickt an jede offene Kurve ein Stück an. Die angeflickten Stücke landen auf der Ebene „Flickebene“ die man nach Gebrauch löschen kann.


Code:
Sub anflicken()
   Dim s1 As Shape, s2 As New Shape, zForm As New Shape
   Dim n1 As Node, n2 As Node
   Dim Flickebene As New Layer
   Dim sr As ShapeRange
   Dim seg As Segment, segVor As Segment, segNach As Segment
   Dim L As Double, k1x As Double, k1y As Double, k2x As Double, k2y As Double
   ActiveDocument.Unit = cdrMillimeter
   On Error GoTo weiter
   
   L = 3
       
   Set sr = ActivePage.Shapes.FindShapes(Type:=cdrCurveShape)
   Set sr = sr.Shapes.FindShapes(Query:="@com.curve.closed = false")
   
   ActiveDocument.BeginCommandGroup "Flickebene"
   Application.Optimization = True
   Set Flickebene = ActivePage.CreateLayer("Flickebene")
   For Each s1 In sr
       k1x = s1.Curve.Nodes.First.PositionX
       k1y = s1.Curve.Nodes.First.PositionY
       k2x = s1.Curve.Nodes.Last.PositionX
       k2y = s1.Curve.Nodes.Last.PositionY
       
       Set n1 = s1.Curve.Nodes.First
       Set n2 = s1.Curve.Nodes.Last
       Set segVor = n2.PrevSegment
       Set segNach = n1.NextSegment
       Set s2 = ActiveVirtualLayer.CreateLineSegment(k1x, k1y, k1x, k1y + L)
       s2.RotateEx segNach.StartingControlPointAngle + 90, k1x, k1y
       ActiveDocument.LogCreateShape s2
       Set s2 = ActiveVirtualLayer.CreateLineSegment(k2x, k2y, k2x, k2y + L)
       s2.RotateEx segVor.EndingControlPointAngle + 90, k2x, k2y
       ActiveDocument.LogCreateShape s2
   Next
weiter:
   Application.Optimization = False
   ActiveDocument.EndCommandGroup
   ActiveSelectionRange.Shapes.All.RemoveFromSelection
   ActiveWindow.Refresh
End Sub

Die Länge der angeflickten Linien kann über die Variable „L“ eingestellt werden. Sie steht hier auf 3mm, das wird für Dich zu lang sein. 

Das Makro basiert auf Norres Idee mit den Pfeilspitzen, nur das es keine Flächen sondern Linien produziert.
Ich bin allerdings skeptisch. Das ist bestimmt kein „professionelles Makro“ und ob es wirklich den erhofften Zweck erfüllt kann ich nicht vorhersagen.

Gruß

Koter


RE: Absturz bei intelligenter Füllung - wdreinheim - 05.03.2019

Hallo Koter,
 
zunächst besten Dank für dieses Makro und den dafür getriebenen Aufwand, ich wollte, ich könnte mir selbst mit der Programmierung helfen, aber dazu brauche ich wohl erst eine Schulung.
 
Ich werde das Makro in Kürze installieren und zurückmelden, ab es mein Problem löst. Aus gesundheitlichen Gründen bitte ich um etwas Geduld.
 
Beste Grüße
WDReinheim


RE: Absturz bei intelligenter Füllung - wdreinheim - 05.03.2019

Hallo Koter,
 
ich habe nun versucht, das Makro Anflicken.GMS zu laden. Leider kommt nur die Fehlermeldung:
 
"Projektdatei kann nicht geladen werden ..."
 
Das passiert in den Versionen X7, X8 und 2018 in gleicher Weise.
 
Was mache ich falsch? Was tun?
 
Beste Grüße
WDReinheim


RE: Absturz bei intelligenter Füllung - koter - 05.03.2019

Hallo Wolfgang,
(05.03.2019, 12:56)wdreinheim schrieb: ...ich habe nun versucht, das Makro Anflicken.GMS zu laden...

Das Makro in meinem letzten Beitrag ist nur der Quellcode, die GMS müsstest Du selbst erstellen.
Ich habe an diesen Beitrag eine GMS angehängt. Das Makro in dieser GMS hat ein Dialogfeld:

[Bild: kappen0kkvq.gif]

Mit dem Makro kann man auch die Enden der angeflickten Stücke kappen. Das dauert allerdings seht lange.
In der Animation sind nur 640 Enden zu kappen. Wie lange das bei tausenden von Objekten dauert, möchte ich mir gar nicht vorstellen. Meine Zweifel bleiben also.

Gruß

Koter