Witold Korab

Witold Korab geodeta, Biprogeo

Temat: Zmiana linii z 2d na 3d

Witam
Poszukuję macra, które zmieniało by (podnosiło) linie narysowaną w pliku 2d, na wysokości "0" do wysokości opisanej na załomach tej linii. Potrzebuje tego do wykonania modelu terenu (stworzenia brekline) i mapy 3d na podstawie mapy 2d z opisanymi wysokościami, mam też współrzędne w txt. Bez macra trzeba ręcznie przerysować wszytkie linie w pliku 3d, co zajmuje sporo czasu, może można by to zautomatyzować.
Prcuję na MS V8i i PowerSurwey, będę wdzięczny za pomoc.
PozdrawiamTen post został edytowany przez Autora dnia 12.02.14 o godzinie 20:40
Joanna Nowakowska

Joanna Nowakowska technolog i
kartograf (vide www)

Temat: Zmiana linii z 2d na 3d

Witam

Trochę więcej szczegółów:

1) Co to za linie - odcinki, czy łamane?
2) rozumiem, że chodzi o podniesienie punktów / załomów do zadanych wysokości?
3) dysponujemy danymi wektorowymi w pliku 2D i danymi przestrzennymi w pliku txt?

Pisałam coś takiego na zlecenie. Jeśli masz fragment kodu, mogę pomóc Ci go rozwinąć, natomiast jesli potrzebujesz konkretne rozwiazanie, zapraszam na prv.

a
Adrian B.

Adrian B. Client Partner -
Professional Web
Platform

Temat: Zmiana linii z 2d na 3d

jeśli element liniowy jest powiązany w jakiś sposób z opisem (rzędną) np. za pomocą grupy graficznej, bądź też opis leży na tej linii to sprawa jest dość prosta. Prześlij kawałek DGN to zobaczę co da się zrobić.
Witold Korab

Witold Korab geodeta, Biprogeo

Temat: Zmiana linii z 2d na 3d

Załomy linii są w punktach wstawienia opisu wysokości, linia nie jest powiązana za pomocą grupy graficznej z opisem.

Poniżej link do pliku:
[url]http://przeklej.org/file/VGdXQJ/mapa2d.przyklad.dgn[url]

Dzięki za pomoc
Adrian B.

Adrian B. Client Partner -
Professional Web
Platform

Temat: Zmiana linii z 2d na 3d

Poniżej kod, który możesz dostosować do własnych potrzeb. Oczywiście makro zapuszczaj na pliku 3d.


Sub PrzeniesLinieDo3D()
Dim ee As ElementEnumerator
Dim esc As ElementScanCriteria
Dim eeTXT As ElementEnumerator
Dim VertexList() As Point3d
Dim i As Long
Dim zakres As Range3d
Dim NowyPunkt As Point3d

Set ee = ActiveModelReference.Scan()
Set esc = New ElementScanCriteria

Do While ee.MoveNext
If ee.Current.IsGraphical Then
If ee.Current.IsLineElement Then
VertexList = ee.Current.AsLineElement.GetVertices
For i = LBound(VertexList) To UBound(VertexList)
zakres.High = VertexList(i)
zakres.Low = zakres.High
esc.IncludeOnlyWithinRange zakres
esc.ExcludeAllTypes
esc.ExcludeAllLevels
esc.IncludeLevel ActiveModelReference.Levels("Warstwa 44")
esc.IncludeType msdElementTypeText

Set eeTXT = ActiveModelReference.Scan(esc)
Do While eeTXT.MoveNext
If eeTXT.Current.IsTextElement Then
NowyPunkt = VertexList(i)
NowyPunkt.Z = CDbl(Replace(eeTXT.Current.AsTextElement.Text, ".", ","))
ee.Current.AsLineElement.ModifyVertex i, NowyPunkt
ee.Current.Redraw msdDrawingModeNormal
ee.Current.Rewrite
End If
Loop
Next i
End If
End If
Loop
End Sub

Ten post został edytowany przez Autora dnia 16.02.14 o godzinie 00:17
Witold Korab

Witold Korab geodeta, Biprogeo

Temat: Zmiana linii z 2d na 3d

Wielkie dzięki, o coś takiego mi chodziło.
Tylko po podniesieniu zostają łączenie pomiędzy "0" a opisaną wysokością (jak na załączonym screen).
Jeśli można by to poprawić to będę wdzięczny, jestem niestety początkujący w vba.
http://przeklej.org/file/B7rE5q/Mapa3d.jpgTen post został edytowany przez Autora dnia 16.02.14 o godzinie 14:53
Adrian B.

Adrian B. Client Partner -
Professional Web
Platform

Temat: Zmiana linii z 2d na 3d

nie do końca rozumiem o co Ci chodzi. Chcesz podnieść opis do wartości jaką wskazuje?
Witold Korab

Witold Korab geodeta, Biprogeo

Temat: Zmiana linii z 2d na 3d

Nie, nie chodzi mi o podnoszenie opisu. Chodzi mi o to, że po podniesieniu powstają połączenia podniesionych linii z opisami wstawionymi na wysokości zero (u mnie macro tak zadziałało). Najlepiej żeby wszystkie linie zostały podniesione do 3d i nie było żednych linii łączących z opisami umieszczonymi na wysokości "0".Chyba że można by to łatwo rozwiązać właśnie przez podniesienie opisu do wartości.Ten post został edytowany przez Autora dnia 16.02.14 o godzinie 18:57
Karol Stachura

Karol Stachura Nie ma na świecie
rzeczy niemożliwych
- są tylko mało
pra...

Temat: Zmiana linii z 2d na 3d

A nie możesz po prostu skasować tych linii narzędziami selekcji ? Wystarczy dobrze ustawić widok żeby się tego pozbyć w kilka sekund.Ten post został edytowany przez Autora dnia 16.02.14 o godzinie 20:22
Witold Korab

Witold Korab geodeta, Biprogeo

Temat: Zmiana linii z 2d na 3d

Oczywiście że tak w widoku front spokojnie się to usuwa.
Macro w takiej postaci jest dużym ułatwieniem. Sorry za zawracanie d...... :)
Jeszcze raz dzięki, pozdrawiam

Następna dyskusja:

Zamiana linii na krzywą




Wyślij zaproszenie do