| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Längen addieren (2619 mal gelesen)
|
dan_rather Mitglied Techniker HLK
Beiträge: 97 Registriert: 09.12.2003
|
erstellt am: 20. Aug. 2004 09:09 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich würde gerne die Linien(Leitungslängen) in einer Zeichnung addieren und das Ergebnis Anzeigen lassen. Wie muss ich den Code Ergänzen? Sub Lays() Dim gew As AcadObject Dim ausw As AcadObject Dim acss As AcadSelectionSet Set acss = ThisDrawing.SelectionSets.Add("0003") On Error GoTo ENDE ThisDrawing.Utility.GetEntity gew, basePnt, "Objekt wählen" MsgBox "Der Layername ist: " & gew.Layer, , "Layerwahl" acss.SelectOnScreen For Each ausw In acss If ausw.Layer = gew.Layer Then MsgBox "Leitungslänge: " & ausw.Length, vbOK, "Auswertung" End If Next 'ausw If ausw.Layer <> gew.Layer Then MsgBox "Nichts gefunden" End If acss.Delete ENDE: acss.Delete End Sub Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
dan_rather Mitglied Techniker HLK
Beiträge: 97 Registriert: 09.12.2003
|
erstellt am: 20. Aug. 2004 10:47 <-- editieren / zitieren --> Unities abgeben:
|
startrek Moderator Architekt
Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 20. Aug. 2004 22:04 <-- editieren / zitieren --> Unities abgeben: Nur für dan_rather
Hi Dan, nich probiert, nur schlaue Sprüche ... rein vonner Logik her, nimm noch ne Variable i as Double rein, und denne innerhalb for-each: i=i+ausw.Length und die message aus der Schleife rausnehmen und besser irgendwo ans Ende setzen [einmal in Summa sollte ja reichen] und ich würd' noch auf if Typeof ausw is AcadLine abklopfen lg Nancy -- Sometimes it works, normally it 'DOS'nt. [Diese Nachricht wurde von startrek am 20. Aug. 2004 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
dan_rather Mitglied Techniker HLK
Beiträge: 97 Registriert: 09.12.2003
|
erstellt am: 21. Aug. 2004 12:10 <-- editieren / zitieren --> Unities abgeben:
Danke Nancy, Dank deines Tips hier der korrekte Code: Sub Massenermittlung() Dim gew As AcadObject Dim ausw As AcadObject Dim acss, acssn As AcadSelectionSet Set acss = ThisDrawing.SelectionSets.Add("Line2") Dim Mldg, Stil, Titel, Antwort, Text1 Mldg = "Leitungslänge: " ' Meldung definieren. Stil = vbOKCancel Titel = "Auswertung" frei = " " Dim acbr As AcadBlockReference Dim entf As AcadObject Dim i As Double Set entf = acbr On Error GoTo ENDE ThisDrawing.Utility.GetEntity gew, "Objekt wählen" MsgBox "Der Layername ist: " & gew.Layer, , "Layerwahl" acss.SelectOnScreen For Each ausw In acss If ausw.Layer = gew.Layer Then If TypeOf ausw Is AcadLine Then i = i + ausw.Length / 1000 End If End If Next ausw Antwort = MsgBox(gew.Layer & frei & Mldg & frei & i & " m", Stil, Titel) If Antwort = vbCancel Then GoTo ENDE ENDE: acss.Delete End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
startrek Moderator Architekt
Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 23. Aug. 2004 19:52 <-- editieren / zitieren --> Unities abgeben: Nur für dan_rather
Hi Dan, schön wenns 'irgendwie' klappt ;-) Nur mal so nebenbei und überflüssigerweise: Aktivier Dir auch mal das Lokalfenster, das gibts nicht nur in der Kneipe um die Ecke, nein auch im VBE unter Menue Ansicht. ;-) Wenn Du nun deine Prozedur[en] mal via F8 [oder 'Einzelschritt'] durchgehst, kannst Du da sehr schön die verschiedenen [Objekt]Variablen beobachten, deren Zustände, Typen, was sie und ob überhaupt noch alles so mitbringen, etc. ..., hilft manchmal IMHO ungemein. Du siehst [wenn auch sicher nicht sofort] was man zT. für Ballast mit sich rumschleppt. Also ruhig ab & zu mal 'einkehren' und einen draufmachen ;-) lg Nancy Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Cad1985 Mitglied hab einen
Beiträge: 380 Registriert: 30.11.2005 Intel Core Duo Processor t2400 1.83 GHz 1Gb RAM Geforce 256 MB Windows XP<P>Inventor 9-11 Autocad 2005-2007 ADT 2005-2007
|
erstellt am: 14. Mrz. 2007 12:15 <-- editieren / zitieren --> Unities abgeben: Nur für dan_rather
Hallo Leute, Habe gerade dieses nütztliche Tool gefunden was muss man im Code ändern damit auch die Polylinien ausgewertet werden? ------------------ Man kann nicht jeden Tag etwas Großes tun, aber gewiss immer etwas Gutes. Gruß Manuel Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Stelli1 Moderator Verm.-Ing.
Beiträge: 1521 Registriert: 17.08.2005 Map 2000-2014, Rasterdesign, MapGuide, Autodesk Topobase, VS6, VS.net 2013
|
erstellt am: 14. Mrz. 2007 12:25 <-- editieren / zitieren --> Unities abgeben: Nur für dan_rather
Hallo Manuell, arbeite das Programm doch mal im Einzelschrittmodus (F8) durch. Dann wirst du sehen das nur Linien (AcadLine) ausgewertet werden. Wenn du hier AcadLWPolyline nimmst geht es auch mit Polylinien (LWPolylinien). Voraussetung ist aber Acad ab 2004 da vorher keine .lenght Eigenschaft da ist. Bei der Gelegenheit mal dran denken das Profil mit Softwareangaben auszufüllen. Stelli ------------------ Warum lisp'eln wenn's auch anders geht. www.ib-stelberg.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Cad1985 Mitglied hab einen
Beiträge: 380 Registriert: 30.11.2005 Intel Core Duo Processor t2400 1.83 GHz 1Gb RAM Geforce 256 MB Windows XP<P>Inventor 9-11 Autocad 2005-2007 ADT 2005-2007
|
erstellt am: 14. Mrz. 2007 13:54 <-- editieren / zitieren --> Unities abgeben: Nur für dan_rather
|
pistolpete1 Mitglied Student
Beiträge: 102 Registriert: 06.01.2007
|
erstellt am: 03. Nov. 2007 08:35 <-- editieren / zitieren --> Unities abgeben: Nur für dan_rather
Hallo Forum, wenn ich mySSet.SelectOnScreen verwende, werden doch alle sichtbaren Elemente am Bildschirm in das SelectionSet aufgenommen, oder? Gibt es nun eine Möglichkeit, nur die markierten Elemente auszuwählen, oder muss das SelectionSet mit SelectOnScreen erstellt werden und anschließend drüber iteriert werden, um für jedes Element abzufragen, ob es selektiert ist? Lg Peter Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Carsten1210 Mitglied staatl. geprüfter Holztechniker
Beiträge: 1357 Registriert: 24.07.2002 AutoCAD ACA 2018 Solidworks 2016 Sp5 Enterprise PDM 2016 Sp5 Pascam Woodworks Visual Studio 2017 Pro Windows 10 64Bit Dell T3620 Intel Core i7-7700K 16 GB Arbeitsspeicher 2x Samsung S24C650 Dell M4800
|
erstellt am: 03. Nov. 2007 09:42 <-- editieren / zitieren --> Unities abgeben: Nur für dan_rather
Hi Peter, Mittels SelectOnScreen wählst du (oder der Benutzer) doch selber die Ob jekte / Elmente aus. Dadurch hast du doch nur die gewählten Elemente in deinem Auswahlsatz. Schau dir doch in der Hilfe die SelectOnScreen(Methode) mal an. Es ist da gut beschrieben. Gruß, Carsten Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |