Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de
  AutoCAD VBA
  Text?

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
  
PNY präsentiert die neue NVIDIA RTX A400 und die A1000 Grafikkarte, eine Pressemitteilung
Autor Thema:  Text? (1618 mal gelesen)
Willynchen_neu
Mitglied



Sehen Sie sich das Profil von Willynchen_neu an!   Senden Sie eine Private Message an Willynchen_neu  Schreiben Sie einen Gästebucheintrag für Willynchen_neu

Beiträge: 24
Registriert: 07.11.2005

erstellt am: 05. Mrz. 2006 12:14    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallöchen,

ich hab mal eine Frage. Ich hab eine Zeichnung mit bestimmten Höhen. Diese Höhen lass ich mir als Bemaßung in der Zeichnung anzeigen. Jetzt möchte ich diesen Text formatieren.
Bsp.: 123,230  Es soll, wenn am Ende eine Null steht, diese gelöscht werden. Es steht dann praktisch 123,23 da.
Leider weiß ich nicht, was das für ein Text ist (Mtext...etc.) und weiß deshalb auch nicht, wie ich darauf zugreifen soll. Kann mir da irgendjemand einen Tip geben?
Hab auch schon versucht über Suchen/Ersetzen im ACAD zugehen. Leider weiß ich nicht, was hier die Ersatzzeichen sind. Evtl. muß man ja garnix programmieren?!

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Stelli1
Moderator
Verm.-Ing.


Sehen Sie sich das Profil von Stelli1 an!   Senden Sie eine Private Message an Stelli1  Schreiben Sie einen Gästebucheintrag für Stelli1

Beiträge: 1526
Registriert: 17.08.2005

Map 2000-2014, Rasterdesign,
MapGuide, Autodesk Topobase,
VS6, VS.net 2013

erstellt am: 05. Mrz. 2006 17:29    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Willynchen_neu 10 Unities + Antwort hilfreich


eigenschaften.jpg

 
Hallo,

ich glaube du willst was machen was jedem Vermesser absolut gegen die Hutschnur geht. 
Gibt es bei einem Mass 3 Nachkommastellen ist es mit einer Genauigkeit von 1mm , gibt es nur eine dann ahlt auf 1dm.
Diese Information willst du gerede zerstören.

Wenn es aber unbedingt sein muss, kannst du das unter den Eigenschaften der Bemassung einstellen.

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

Willynchen_neu
Mitglied



Sehen Sie sich das Profil von Willynchen_neu an!   Senden Sie eine Private Message an Willynchen_neu  Schreiben Sie einen Gästebucheintrag für Willynchen_neu

Beiträge: 24
Registriert: 07.11.2005

erstellt am: 05. Mrz. 2006 18:54    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

  ....naja....nicht jedem vermesser (also mir :-D ) geht das gegen die hutschnur...ich kann ja nur die genauigkeit angeben mit der ich gemessen hab und die ich garantieren kann...klar kann man auf mm angeben aber was soll das bei ner geländeaufnahme   

so....zurück zum thema...
ich hab mich etwas falsch ausgedrückt...also die daten kommen über eine scriptdatei in die zeichnung z.b ".....layer se PH_Schutzziel_1  text 4530577.000,5664363.000,137.120 2.000 100.0 137.120..."
also nix anderes als: befehl 'text'und dann den eingabeaufforderungen folgen...nur automatisch...und nun will ich die texte (137.120) in der zeichnung aufsuchen und ändern, nur fehlt mir dazu die richtige idee...ich habs mit 'suche/ersetze' versucht (auch in der scriptdatei)
die entsprechenden höhentexte aufsuchen und ändern aber mir fehlt der richtige suchalgorithmus z.B. suche nach *.**0...ersetze durch *.**...aber das nimmt autocad2004 irgendwie nicht....

[Diese Nachricht wurde von Willynchen_neu am 05. Mrz. 2006 editiert.]

[Diese Nachricht wurde von Willynchen_neu am 05. Mrz. 2006 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

startrek
Moderator
Architekt


Sehen Sie sich das Profil von startrek an!   Senden Sie eine Private Message an startrek  Schreiben Sie einen Gästebucheintrag für startrek

Beiträge: 1361
Registriert: 13.02.2003

.

erstellt am: 05. Mrz. 2006 20:16    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Willynchen_neu 10 Unities + Antwort hilfreich

Hi,

här? irgendwie raff' ichs noch nicht so ganz, also deine Maße sind Texte und stehen in einer Zeile, eg:
"137.12000 0.050 1200.2 1.1234 1.00000"

Wenn ja, das geht mit RE oder nem Split s.u. - aber erklär doch bitte nochmal genau, wie das Ganze bei Dir aussieht,
dText? mtext? mehrere standalone Nummerntexte oder echt alle Nummern in einer Zeile???

Gruss Nancy
--

Code:

Sub x()
   
    Dim re As Object, s$
    Set re = CreateObject("vbscript.regexp")
    re.Global = 1
    s = "137.12000 0.050 1200.2 1.1234 1.00000"
    re.Pattern = "(\d+\.\d\d)\d+"
    Debug.Print 1, re.Replace(s, "$1")
     
    Dim arr, i
    arr = Split(Replace(s, ".", ","))
    For i = 0 To UBound(arr)
        arr(i) = FormatNumber(arr(i), 2)
        'oder alternativ
        'arr(i) = Round(arr(i), 2)
    Next
    Debug.Print 2, Join(arr)
   
End Sub

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Stelli1
Moderator
Verm.-Ing.


Sehen Sie sich das Profil von Stelli1 an!   Senden Sie eine Private Message an Stelli1  Schreiben Sie einen Gästebucheintrag für Stelli1

Beiträge: 1526
Registriert: 17.08.2005

Map 2000-2014, Rasterdesign,
MapGuide, Autodesk Topobase,
VS6, VS.net 2013

erstellt am: 05. Mrz. 2006 20:48    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Willynchen_neu 10 Unities + Antwort hilfreich

Hallo,

dann formatier dir Texte doch vor dem Einlesen.

z.B. in Excel einlesen, Menü Daten, Funktion "Text in Spalten"
Deinen Höhentext formatieren und fertig

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

Stelli1
Moderator
Verm.-Ing.


Sehen Sie sich das Profil von Stelli1 an!   Senden Sie eine Private Message an Stelli1  Schreiben Sie einen Gästebucheintrag für Stelli1

Beiträge: 1526
Registriert: 17.08.2005

Map 2000-2014, Rasterdesign,
MapGuide, Autodesk Topobase,
VS6, VS.net 2013

erstellt am: 05. Mrz. 2006 20:55    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Willynchen_neu 10 Unities + Antwort hilfreich

Oder bau dir doch ein kleines Progi.

Code:

Option Explicit

Private Sub BT_Ausführen_Click()
Dim Text As String, T_pos&, T_Len&
Dim Anzahl&

If Val(Me.lbl_Anzahl.Caption) = 0 Then
  MsgBox "Es sind noch keine Entities gewählt !", vbCritical
  Exit Sub
End If
 
  Anzahl = Val(lbl_Anzahl)
 
  Select Case Me.TabStrip1.SelectedItem.key
        Case "ERSETZEN"
              FrmFortschritt.Show
              FrmFortschritt.Caption = "Texte tauschen ..."
              FrmFortschritt.ProgressBar1.value = 0
              FrmFortschritt.ProgressBar1.Max = Anzahl
              Me.Visible = False
              ' ...       

        Case "RUNDEN"
              Dim wert#, strWert$
              FrmFortschritt.Show
              FrmFortschritt.Caption = "Zahlen runden ..."
              FrmFortschritt.ProgressBar1.value = 0
              FrmFortschritt.ProgressBar1.Max = Anzahl
              Me.Visible = False
              ' Wenn Layer gesperrt
              On Error Resume Next
 
              For i = 0 To Anzahl - 1
                    FrmFortschritt.ProgressBar1.value = i + 1
                    Set obj_ACAD_Entity = obj_ACAD_Grafikauswahl(i)
                 
                    Select Case obj_ACAD_Entity.EntityType
                          Case acText, acMText
                                strWert = Replace(obj_ACAD_Entity.TextString, ",", ".")
                                wert = Val(strWert)
                                strWert = Format$(wert, "0." & String(Val(Me.Nachkommastellen.Text), "0"))
                                obj_ACAD_Entity.TextString = prefix.Text & strWert & suffix.Text
                                obj_ACAD_Entity.Update
                              Case Else
                                  'MsgBox "Falsches Entity" & cr & "[" & Entity.EntityName & "]", vbInformation
                    End Select
              Next i
  End Select

ende:
   
Unload FrmFortschritt
Me.Visible = True

End Sub



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

Willynchen_neu
Mitglied



Sehen Sie sich das Profil von Willynchen_neu an!   Senden Sie eine Private Message an Willynchen_neu  Schreiben Sie einen Gästebucheintrag für Willynchen_neu

Beiträge: 24
Registriert: 07.11.2005

erstellt am: 07. Mrz. 2006 14:56    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Stelli,

erstmal vielen Dank für die Antwort.

Also das mit den Daten vor dem Einlesen formatieren geht schlecht. Nochmal zur Erklärung. Ich bekomme die Daten über ein externes Programm in ein Script gewandelt. In dem Programm ist die Genauigkeit von 3 Nachkommastellen fest veranktert. Hier kann ich nichts ändern. Leider. Das gewandelte Script besteht aus 1 Spalte, in der alles hinein gepackt ist. Dazu kommt aber noch, daß die 1. Zeile die Angaben der Meßpunkte für einen bestimmten Layer enthält, die 2. Zeile dann die Angaben für die Texte in dem Layer, die 3. Zeile wieder die Angaben für die Punkte in einem anderen Layer, die 4. Zeile die Texte für den anderen Layer usw.
Da jedoch in der Layerzeile mehr Angaben stehen, als in der Textzeile, geht das mit Text in Spalten machen über Excel auch nur sehr mühselig.

Naja hatte nun versucht dein Programm zu basteln, aber ich komme irgendwie nicht richtig zu Fach. Was bzw. wie muß ich denn die obj_ACAD_Entity definieren?

Dein Programm ist ja dann auch schon der reinste Luxus. Eigentlich wollt ich ja nur wissen, wie ich bzw. was ich alles definieren muß, um  den Text im ACAD ansprechen zu können.
Vielleicht kann mir jemand einen Tip geben, wo es dazu mal nen guten Überblick gibt? Bin noch am Lernen  und leider kein Profi.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

startrek
Moderator
Architekt


Sehen Sie sich das Profil von startrek an!   Senden Sie eine Private Message an startrek  Schreiben Sie einen Gästebucheintrag für startrek

Beiträge: 1361
Registriert: 13.02.2003

.

erstellt am: 07. Mrz. 2006 22:32    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Willynchen_neu 10 Unities + Antwort hilfreich

Moment mal, ich stell' mich jetzt mal ganz doof;-)

Also:
> Ich bekomme die Daten über ein externes Programm in ein Script gewandelt.
> In dem Programm ist die Genauigkeit von 3 Nachkommastellen fest veranktert.

weiter schreibst du:
> Da jedoch in der Layerzeile mehr Angaben stehen, als in der Textzeile,
> geht das mit Text in Spalten machen über Excel auch nur sehr mühselig.

Du sprichst von einem reinen Textfile, ja? Oder halt *.scr?
Wenn ja, wäre es IMHOIn my humble oppinion (Meiner Meinung nach) gleich besser mit dem evil_by_root, also das File zu ändern,
als erst im Nachgang dann durch alle Acad-Texte zu iterieren.
Bin aber zugegebenermassen ein ziemlicher N00b mit scr, also kannst evtl. mal 'nen Auszug
von dem Script zeigen?

Gruss Nancy

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Goofy007
Mitglied
Vermessungstechniker


Sehen Sie sich das Profil von Goofy007 an!   Senden Sie eine Private Message an Goofy007  Schreiben Sie einen Gästebucheintrag für Goofy007

Beiträge: 578
Registriert: 06.11.2004

Map3D 2018 und Civil3D 2018

erstellt am: 08. Mrz. 2006 20:45    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Willynchen_neu 10 Unities + Antwort hilfreich

Hallo Willynchen_neu,

um Text im Acad/VBA ansprechen zu können brauchst du nicht viel.
zB.

Code:
Sub texte()
    Dim object As AcadObject
    For Each object In ThisDrawing.ModelSpace
      Hier einfügen was du machen willst...   
    End If
    Next object
End Sub

Aber ich würd auch lieber die scr-Datei bearbeiten. Wenn du mal ein paar Zeilen ins Forum stellst, kann man da mehr sagen.

Eine (allerdings nicht ungefährliche) Idee wäre zb. globale Textersetzung im Script. Befehle bzw. Werte werden im Script duch Blanks getrennt. Wenn du nun immer die 0 in der letzten Stelle weg haben willst kannst du event. den String "0 " durch " " ersetzen.
Aber bitte aufpassen, das kann auch an Stellen vorkommen wo du das haben willst, wie gesagt ein Muser würde helfen.

mfg didi

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Goofy007
Mitglied
Vermessungstechniker


Sehen Sie sich das Profil von Goofy007 an!   Senden Sie eine Private Message an Goofy007  Schreiben Sie einen Gästebucheintrag für Goofy007

Beiträge: 578
Registriert: 06.11.2004

Map3D 2018 und Civil3D 2018

erstellt am: 08. Mrz. 2006 20:48    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Willynchen_neu 10 Unities + Antwort hilfreich

sorry hab eine Zeile verschluckt:

Code:
Sub text()
    Dim object As AcadObject
    For Each object In ThisDrawing.ModelSpace
        If object.ObjectName = "acdbtext" Then
        ...
        End If
    Next object
End Sub

damit bearbeitest du alle Texte im Modelbereich...

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Willynchen_neu
Mitglied



Sehen Sie sich das Profil von Willynchen_neu an!   Senden Sie eine Private Message an Willynchen_neu  Schreiben Sie einen Gästebucheintrag für Willynchen_neu

Beiträge: 24
Registriert: 07.11.2005

erstellt am: 09. Mrz. 2006 14:14    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallöchen miteinander,

erstmal vielen Dank für die Antworten. Habe jetzt sehr viel rumgebastelt und einige Varianten zustande gebracht. Meist ist der korrekte Ablauf des Tools dann aber daran gescheitert, daß keine Platzhalterzeichen erkannt worden sind.
Jetzt hab ich aber doch nochmal gründlichst das Forum durchforstet und das hier gefunden: http://ww3.cad.de/foren/ubb/Forum259/HTML/000340.shtml

Das hab ich jetzt für meine Sache umgestrickt und es funktioniert supi
Der eigentliche Hinweis in diesem Beitrag war die Sache mit dem Verweis....jetzt klappen meine eigenen Varianten sogar auch.
   

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2025 CAD.de | Impressum | Datenschutz