Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Koordinatenausgabe Befehlszeile/Zwischenablage

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
Autor Thema:  Koordinatenausgabe Befehlszeile/Zwischenablage (2189 mal gelesen)
s.wickel
Mitglied
Bauingenieur Wasserwirtschaft


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

Beiträge: 422
Registriert: 17.12.2001

Bricscad V7 - V11

erstellt am: 19. Sep. 2005 15:24    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 Forum!

Ich habe eine Funktion geschrieben die mir die Koordinate eines angeklickten Punktes so anzeigt, dass ich das Ergebnis direkt wieder in die Befehlszeile von ACAD kopieren kann. also nich wie in ACAD eingebaut

Befehl: '_id Punkt angeben:  X = 3450660.0000    Y = 5621930.0000    Z = 0.0000

sondern:

Befehl: XYZ Punkt angeben: 3450660.0000,5621930.0000,0.0000

Der Code dazu sieht so aus:

Code:

(defun c:xyz ( / xyz)
  (setq xyz (getpoint "Punkt angeben: "))
  (setq xyz (strcat (rtos (car xyz)) "," (rtos (cadr xyz)) "," (rtos (caddr xyz))))
  (princ xyz)
  (princ)
)


Jetzt möchte ich die Ausgabe so gestalten, dass ich den Wert in Excel einfügen kann und die drei Zahlen gleich in drei Zellen (nebeneinander) stehen. Ich habe schon versucht das "," durch "\t" zu ersetzen (ein Tabulator würde das in Excel regeln), aber es kommen nur Leerzeichen rüber  . Ein ";" hilft nicht weiter, weil es von Excel nicht als Trennzeichen anerkannt wird  . Vielleicht kann man die Zahlen mit VLisp in die Zwischeablage schieben  ?


------------------
Nodda,

Stefan   

[Diese Nachricht wurde von s.wickel am 19. Sep. 2005 editiert.]

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

CADmium
Moderator
Maschinenbaukonstrukteur




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

Beiträge: 13508
Registriert: 30.11.2003

.

erstellt am: 19. Sep. 2005 15:50    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 s.wickel 10 Unities + Antwort hilfreich

Ein Beitrag zur Zwischenablage

------------------
- Thomas -
"Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."

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

Jan1
Mitglied
CAD Consultant


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

Beiträge: 17
Registriert: 12.05.2004

erstellt am: 20. Sep. 2005 15:50    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 s.wickel 10 Unities + Antwort hilfreich

Hallo Stefan,

ich habe da noch einen alternativen Vorschlag, der in eine ähnliche Richtung geht. Diese lösung hat allerdings einen gewaltigen Nachteil -> es kostet viel Zeit.

(defun setClipboardData (sData / vlaIE)
  (vl-load-com)
  (if (setq vlaIE (vlax-create-object "InternetExplorer.Application"))
    (progn
      (vlax-invoke-method vlaIE 'navigate "about:blank")
      (vlax-invoke-method (vlax-get-property (vlax-get-property (vlax-get-property vlaIE 'Document) 'ParentWindow) 'ClipBoardData) 'SetData "text" sData)
      (vlax-invoke-method vlaIE 'quit)
    ); end progn
  ); end if
); end defun

Gruß, Jan

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

s.wickel
Mitglied
Bauingenieur Wasserwirtschaft


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

Beiträge: 422
Registriert: 17.12.2001

Bricscad V7 - V11

erstellt am: 20. Sep. 2005 15:58    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!

Danke für Antworten. Mir ging es eigentlich darum, die Koordinaten aus der Befehlszeile in die Zwischenablage zu kopieren (von Hand). Mit der Ausgabe für das ACAD-Koordinatenformat (mit Kommas getrennt) funktioniert das wunderbar. Einfach die Zwischenablage wieder in die Befehlszeile einfügen, fertig. Das Problem war, dass wenn ich eine solche Koordinaten in Excel einfüge ich erstmal den Textstring, der aus der Zwischenablage kommt bearbeiten muss und in drei Teile teilen, die ich dann auf drei Zellen verteile. Wenn in der Zwischenablage ein String vorhanden ist, dessen drei Teile mit TABs getrennt sind, dann fügt Excel diese automatisch in drei Zellen ein (das Probelem mit Kommas und Punkten als Dezimaltrennzeichen ist marginal). Leider habe ich es nicht geschafft einen Text in die Befehlszeile zu drucken, der TABs enthält, die werden nämlich als Leerzeichen dargestellt. Deshalb war ich auf die Idee gekommen, den String direkt in die Zwischenablage zu kopieren. Aber diese Lösungen sind mir zu aufwändig. Da kann ich noch tausend mal von Hand kopieren und nachbearbeiten.

Viele Dank für die Unterstützung.

------------------
Nodda,

Stefan 

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

joern bosse
Ehrenmitglied
Dipl.-Ing. Vermessung


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

Beiträge: 1734
Registriert: 11.10.2004

Window 10
ACAD 2021
CIVIL 2021
BricsCAD V14-V22
Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz
16.0GB RAM
NVIDIA GeForce GTX 1050<P>

erstellt am: 20. Sep. 2005 16:26    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 s.wickel 10 Unities + Antwort hilfreich

Hallo Stefan,
warum die Tab's in der Eingabeaufforderung nicht funktionieren kann ich Dir auch nicht sagen, aber Du könntest doch Deine ermitelten Koordinaten in eine Textdatei schreiben, quasi erstmal mit jedem Aufruf von "xyz" sammeln, und dann in einem Abwasch in die Exceldatei kopieren:

Code:

(defun c:xyz  (/ xyz datei)
  (setq xyz (getpoint "Punkt angeben: "))
  (setq datei (open "c:/tab.txt" "a"))
  (write-line
    (strcat (rtos (car xyz))
    "\t"
    (rtos (cadr xyz))
    "\t"
    (rtos (caddr xyz)))
    datei)
  (close datei)
  (princ)
  )

Wenn Du wieder von vorne beginnen willst, mußst Du die Datei tab.txt nur wieder löschen.

------------------
viele Grüße

Jörn

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

s.wickel
Mitglied
Bauingenieur Wasserwirtschaft


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

Beiträge: 422
Registriert: 17.12.2001

Bricscad V7 - V11

erstellt am: 20. Sep. 2005 17:20    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 Jörn!

Das wurde ja auch in dem anderen oben angegebenen Thread empfohlen. Ich werde es wohl so machen, dass die Datei dann auch automatisch mit dem Editor geöffnet wird, denn es geht mir dabei immer nur um einzelene Koordinaten, die ich weiterverarbeiten will. Für mehr habe ich ein eigenes Programm (das ich dringen mal überarbeiten muss).

Danke für deinen Vorschlag.

Stefan

------------------
Nodda,

Stefan 

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

startrek
Mitglied
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: 20. Sep. 2005 20:17    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 s.wickel 10 Unities + Antwort hilfreich

komisch ist das schon, erst gings bei mir nicht damit:
Code:

(defun c:xyz ( / xyz)
  (setq xyz (getpoint "Punkt angeben: "))
  (setq xyz (strcat (rtos (car xyz)) "\t" (rtos (cadr xyz)) "\t" (rtos (caddr xyz))))
  (princ xyz)
  (princ)
)

Soll heissen, auch ich hatte den string in einer Zelle mit Leerzeichen.
Daraufhin hab' ich nachdem das in der ZA war, versucht via Makro in Excel einzufügen,
mir schienen "\t" == 6 Spaces:
Code:

Sub x()
   Dim d As New DataObject, s
   d.GetFromClipboard
   s = Split(d.GetText, Space(6))
   Range(ActiveCell, ActiveCell.Offset(0, UBound(s))) = s
   Set d = Nothing
End Sub

Seltsamerweise ging dann irgendwie plötzlich auch das 'normale' Paste im Excel. [BTWBy the way (So nebenbei bemerkt), xl2000]
Irgendwie verstehe ich grade nicht so recht, was wie weshalb warum auf einmal;-)
auch keine Ahnung was das "\t" für einen keycode hat, nen chr(9)=vbtab jedenfalls nicht ...

Irgendwie suspekt mit dem acad-tab, ich würde das Teil mit nem ";" als Delimiter princ'en lassen, das aus der commandline kopieren
und in Excel halt dann via Makro einfügen, kann man sich ja auf nen Button legen.
Bei der ";" Variante sähe die Zeile statt:

Code:

s = Split(d.GetText, Space(6))
'so aus
s = Split(d.GetText, ";")

Ist aber wirklich nur was für vereinzelte Copy-Aktionen, um den Umweg über *.txt *.csv zu sparen,
bzw. macht halt dasselbe wie Menu > Daten > Text in Spalten ;-)

Gruss Nancy    

[Diese Nachricht wurde von startrek am 20. Sep. 2005 editiert.]

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

s.wickel
Mitglied
Bauingenieur Wasserwirtschaft


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

Beiträge: 422
Registriert: 17.12.2001

Bricscad V7 - V11

erstellt am: 04. Okt. 2005 14:41    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 alle die Ihr mir helfen wolltet!

Noch mal Danke für Eure Mühe. Ich habe die richtige Funktion in DOSLIB gefunden. Mit dos_clipboard kann man einen Text in die Zwischenablage kopieren und TABs bleiben erhalten. Zwar habe ich die Funktion dann nicht selbst geschrieben, aber irgendwo hören meine Programmierkenntnisse eben auf (mache ich ja nur nebenher).

------------------
Nodda,

Stefan 

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

Bernd P
Ehrenmitglied V.I.P. h.c.
cook-general



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

Beiträge: 3358
Registriert: 07.06.2001

W10-64bit, AMD Ryzen 7 3700X,32GB RAM, Sapphire Pulse Radeon RX 570 8G G5, Canon TX-3000 MFP, Maus Cherry MW4500, Sub:Infrastructure Design Suite, Office 365

erstellt am: 09. Sep. 2022 09: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 s.wickel 10 Unities + Antwort hilfreich

Servus, kannst du den Code dazu posten? Dankde!

------------------
<----- Bitte Systeminfo eintragen, warum siehst du hier. Schöne Grüsse aus der Steiermark  Bernd P.

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



BIM Koordinator (m/w/d)

ACT NOW! Bei ENGIE arbeiten Sie beim europaweiten Marktführer für effizienten Energieeinsatz. Mehr als 5.900 Mitarbeiter:innen an 50 Standorten in Deutschland packen beim Thema Klimaneutralität richtig an.

Wie wir das machen? Zum Beispiel sorgen wir dafür, dass in den Produktionen unserer Kund:innen CO2 eingespart wird. Oder wir unterstützen beim technischen Gebäudemanagement im Bereich Heizung, Sanitär, Klima und Kältetechnik....

Anzeige ansehenProjektmanagement
cadffm
Moderator
良い精神




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

Beiträge: 21533
Registriert: 03.06.2002

Alles

erstellt am: 09. Sep. 2022 10:22    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 s.wickel 10 Unities + Antwort hilfreich

dos_clipboard erwartet doch einfach nur einen String (oder sehe ich das falsch?) und der Rest steht im ersten Posting, was für einen Code willst du da haben  


(dos_clipboard "Der\tblöde\tString")


edit
Nachtrag, zum Beispiel so:

Code:
(defun c:xyz ( / xyz)
  (setq xyz (getpoint "Punkt angeben: "))
  (princ (strcat "\n" (rtos (car xyz)) "," (rtos (cadr xyz)) "," (rtos (caddr xyz))))
  (if dos_clipboard
      (dos_clipboard (strcat (rtos (car xyz)) "\t" (rtos (cadr xyz)) "\t" (rtos (caddr xyz))))
      (princ "  (doslib nicht geladen)")
  )
  (princ)
)

Mein Tip: Anzeigekoordinate in WKS wenn das WKS aktiv ist,
BKS und WKS Koordinaten wenn kein WKS aktiv ist
und eine Option (oder zwei verschiedene Funktionsnamen) für den Übertrag wahlweise als WKS oder BKS Daten.

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)2023 CAD.de | Impressum | Datenschutz