Witold Korab

Witold Korab geodeta, Biprogeo

Temat: Zmiana liczby o zadną wartość

Witam
Poszukuję macra lub jakiegoś programu do zmiany textu-liczby w pliku dgn o zadaną, stałą wartość. Coś takiego żeby wskazaną liczbę, a najlepiej wszystkie liczby na warstwie lub wskazane w inny sposób (fence itp.) można było zmniejszyć lub zwiększyć o zadaną stałą wartość bez zmiany atrybutów tego textu (obrotu, punktu wstawienia itp.). Przykładowo mam 87,85 88,85; 89,85..... i chcę te wszystkie liczby zmniejszyć o 0,05.
Prcuję na MS V8i, będę wdzięczny za pomoc.
PozdrawiamWitold Korab edytował(a) ten post dnia 05.05.13 o godzinie 11:44
Karol Stachura

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

Temat: Zmiana liczby o zadną wartość

Eksport zaznaczonych tekstów do pliku tekstowego (XYZ tekst), wrzuć do excela - popraw wartości -> zaimportuj plik tekstowy. Chyba, że tego narzędzia już w v8i nie ma.
Adrian B.

Adrian B. Client Partner -
Professional Web
Platform

Temat: Zmiana liczby o zadną wartość

Poniższe makro mieli tekst na określonej warstwie. Więcej operacji to więcej zabawy ;)

Sub ZmianaLiczby()
Dim ee As ElementEnumerator
Dim esc As New ElementScanCriteria
Dim wartosc As Double
Dim NowaWartosc As Double

esc.ExcludeAllLevels
esc.IncludeLevel ActiveModelReference.Levels.Find("Nazwa Warswty") 'Podajesz nazwe warstwy

wartosc = 33.5 'podajesz wartość

Set ee = ActiveModelReference.Scan(esc)

Do While ee.MoveNext
If ee.Current.IsGraphical Then
If ee.Current.IsTextElement Then
If IsNumeric(Replace(ee.Current.AsTextElement.Text, ".", ",")) Then
NowaWartosc = CDbl(Replace(ee.Current.AsTextElement.Text, ".", ",")) + wartosc ' A tu wyrażenie matematyczne które możesz rozwinąć
ee.Current.AsTextElement.Text = NowaWartosc
ee.Current.Rewrite
End If
End If
End If

Loop
End Sub
Witold Korab

Witold Korab geodeta, Biprogeo

Temat: Zmiana liczby o zadną wartość

Adek B.:
Poniższe makro mieli tekst na określonej warstwie. Więcej operacji to więcej zabawy ;)


Wielkie dzięki !!!
Działa !!!

wartosc = 33.5 'podajesz wartość - o co chodzi w tej lini ??
Macro zmieniło mi cały text na warstwie o zadaną wartoć, tak jak chciałem, (tej linii 33.5 nie zmieniałem) wszystko działa.

Można by macro troszkę zmodyfikować żeby zostawiało ilość miejsc dziesiętnych taką samą jak w zmienianej liczbie, albo dwa miejsca dziesiętne? Bo teraz z np. 100.05 (-0.05) zostaje 100, a lepiej by było 100.00.

Jeszcze raz wielkie dzięki !!!Witold Korab edytował(a) ten post dnia 06.05.13 o godzinie 18:58
Adrian B.

Adrian B. Client Partner -
Professional Web
Platform

Temat: Zmiana liczby o zadną wartość

poniższa linia w kodzie:
wartosc = 33.5 'podajesz wartość 

to przypisanie wartości 33,5 do zmiennej, która nazywa się wartosc. Zmienna ta wykorzystywana jest w linii:
NowaWartosc = CDbl(Replace(ee.Current.AsTextElement.Text, ".", ",")) + wartosc 

gdzie zapisane jest proste wyrażenie algebraiczne (dodawanie do znalezionego tekstu właśnie przypisanej wartości) Oczywiście wartość możesz zmienić w powyżej linii wpisująć odpowiednią liczbę zamiast zmiennej wartosc czyli może to wyglądać tak:
NowaWartosc = CDbl(Replace(ee.Current.AsTextElement.Text, ".", ",")) -0.05 
i pewnie tak zrobiłeś :)
Jeśli zrobileś to w ten sposób to ta linia kodu, o której tu pisze na samym początku nie ma już znaczenia, bo nie jest nigdzie więcej wykorzystywana.

Aby ustawić liczbę do dwóch miejsc po przecinku zamień kod:
ee.Current.AsTextElement.Text = NowaWartosc

na
ee.Current.AsTextElement.Text = Format(Round(NowaWartosc, 2), "#.00")

i powinno być git.
Witold Korab

Witold Korab geodeta, Biprogeo

Temat: Zmiana liczby o zadną wartość

A rozumiem w miejsce 33.5 wpisuje o ile chce zmienić i to wystarczy. Zrobiłem rzeczywiście tak jak napisałeś, tzn wpisałem niżej. Najważniejsze że działa, ile to klikania można zaoszczędzić :)
Jest bardzo git. Jeszcze raz wielkie dzięki !!!

Następna dyskusja:

Grupowa zmiana Właściwości




Wyślij zaproszenie do