Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  IntelliCAD
  Block einfügen am Fadenkreuz

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
Autor Thema:   Block einfügen am Fadenkreuz (2204 mal gelesen)
gude
Mitglied
Dipl.-Ing.

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

Beiträge: 7
Registriert: 28.08.2006

erstellt am: 28. Aug. 2006 23:00    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

Ich programmiere mit Delphi 7 und bin jetzt soweit, daß ich einen DXF-Block so in BricsCad einfügen kann, daß dieser für den Anwender am Fadenkreuz hängt.

Quellcode für die AutoCAD Variante:
ACAD.ActiveDocument.SendCommand(
'_-insert "' + TempOrdner + '\' + AdsQuery_ArtikelstammTETENR.AsString + '_' + Typ + Ext + '"' +CR); // CR = #13#10
repeat // Warten bis AutoCAD wieder bereit ist Befehle anzunehmen
until ACAD.GetAcadState.IsQuiescent; // Funktioniert erst ab AutoCAD 2004, obwohl es den Befehl auch schon in früheren Version gab
for re:= 0 to ACAD.ActiveDocument.Layers.Count-1 do begin // AutoCAD beginnt bei 0
sLayer:= AnsiUpperCase(ACAD.ActiveDocument.Layers.Item(re).Name);
if (sLayer = 'MP_VERDECKT') or
    (sLayer = 'MP_MITTELLINIEN') or
    (sLayer = 'MP_HILFSLINIEN') or
    (sLayer = 'MP_BEMASSUNG') then
  ACAD.ActiveDocument.Layers.Item(re).LayerOn:= false;
end;

Quellcode für die BricsCad Variante:
// Zuerst muß eine temporäre Lisp-Datei erzeugt werden
IIcad.LoadLISP(TempOrdner + '\' + '_block.lsp'); // in der lsp-Datei steht der insert Befehl
// Jetzt hängt der Block am Cursor des Anwenders
// Das Dephi Programm muß jetzt warten, bis BricsCAD wieder Befehle annehmen kann, aber wie ???
// IsQuiescent kennt BricsCad nicht !!!
for re:= 1 to ACAD.ActiveDocument.Layers.Count do begin // BricsCad beginnt bei 1
sLayer:= AnsiUpperCase(IIcad.ActiveDocument.Layers.Item(re).Name);
if (sLayer = 'MP_VERDECKT') or
    (sLayer = 'MP_MITTELLINIEN') or
    (sLayer = 'MP_HILFSLINIEN') or
    (sLayer = 'MP_BEMASSUNG') then
  IIcad.ActiveDocument.Layers.Item(re).LayerOn:= false; // funktioniert, aber die Layerliste wird nicht aktualisiert -> Bug in BricsCad!?!?
end;

Frage: Gibt es sowas wie IsQuiescent in BricsCad oder gibt es eine andere Möglichkeit, einen Block so einzufügen, daß der Block für den Anwender am Fadenkreuz hängt?
IIcad.RunCommand und _DDINSERT habe ich schon ausprobiert.

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

Theodor Schoenwald
Ehrenmitglied



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

Beiträge: 1672
Registriert: 16.04.2002

erstellt am: 30. Aug. 2006 21:09    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 gude 10 Unities + Antwort hilfreich

Hallo gute,

zuerst eine Frage, ist das Fadenkreuz beim einfügen sichtbar?
Wenn nicht kann man das Einstellen.
Zweite Frage liegt der Ursprungspung beim Block bei 0,0?
Wenn ja, hängt er bei meinem Test am Fadenkreuz.

Ich habe es mit _DDINSERT getestet.
Wenn ich die Eigaben in der Befehlzeile nicht machen wollte, würde ich den Befehl in das Menü einbinden, auf ein Icon setzen oder eine kleine (ca. 5 bis 10 Zeilen) Lispdatei erstellen. Oder gibt es eine Grund warum Du auf die ICAD oder ACAD Bordmittel verzichtest?

Gruß
Theodor

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

gude
Mitglied
Dipl.-Ing.

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

Beiträge: 7
Registriert: 28.08.2006

erstellt am: 30. Aug. 2006 23: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

Wenn ich _DDINSERT verwende geht bei mir eine Dialogbox auf.

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

Theodor Schoenwald
Ehrenmitglied



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

Beiträge: 1672
Registriert: 16.04.2002

erstellt am: 31. Aug. 2006 12: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 gude 10 Unities + Antwort hilfreich

Hallo,

hast Du ach mal _insert oder _-insert getestet?
Z.B.:        (command _insert "BLOCKNAME" "\\" )

Gruß
Theodor

[Diese Nachricht wurde von Theodor Schoenwald am 31. Aug. 2006 editiert.]

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

gude
Mitglied
Dipl.-Ing.

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

Beiträge: 7
Registriert: 28.08.2006

erstellt am: 31. Aug. 2006 18:59    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

Insert verwende ich doch, wobei ich in BricsCad über die lsp-Datei gehen muß. Das Einfügen des Blocken ist nicht das Problem, das funktioniert wie gewünscht. Jedoch muß mein Programm warten bis der Anwender den Block abgesetzt hat und dies funktioniert mit BricaCad nicht, da es wohl den Befehl IsQuiescent nicht kennt.

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

gude
Mitglied
Dipl.-Ing.

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

Beiträge: 7
Registriert: 28.08.2006

erstellt am: 01. Sep. 2006 21:12    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

Genau so verhält es sich wenn ich den Anwender auffordere Elemente in seiner Zeichnung auszuwählen um dann diese Daten auszuwerten. Mein Programm muß solange warten, bis der Anwender fertig ist. In AutoCAD erreiche ich das mit dem Befehl IsQuiescent.

AutoCAD:
ACAD.ActiveDocument.SendCommand('_Select ');
    try
      repeat // Warten bis AutoCAD bereit ist
      until ACAD.GetAcadState.IsQuiescent; // geht nicht bei AutoCAD 2000
    except
    end;

BricsCAD???  IsQuiescent???

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

Theodor Schoenwald
Ehrenmitglied



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

Beiträge: 1672
Registriert: 16.04.2002

erstellt am: 02. Sep. 2006 23:43    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 gude 10 Unities + Antwort hilfreich

Hallo,
schon mal so ein Beispiel getestet?
;;----------------------------------------------------------
(prompt "\nDie Arbeit wird getan. Bitte warten . .  .")
(prompt "\n")
(startapp "Arbeit.EXE") ; die Datei DATEI.TXT wird erzeugt
(princ)
(setq Z 1)
(while (and (not (findfile "DATEI.TXT")) (<= Z 10)); 10 Durchgänge
(command "PAUSE" 1000) ; 1000 kann auch höher oder niedriger sein
(setq Z (1+ Z))
)
;; ...
;; ...

So wie im Beispiel eine Datei gesucht wird, kann auch z.B. ein Block gesucht werden.

Gruß
Theodor Schönwald

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

gude
Mitglied
Dipl.-Ing.

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

Beiträge: 7
Registriert: 28.08.2006

erstellt am: 04. Sep. 2006 17:36    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

Vielen Dank Theodor für Deine Antworten.

Die eigentliche Frage ist: Gibt es sowas wie IsQuiescent in BricsCad?

Dietmar

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

Theodor Schoenwald
Ehrenmitglied



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

Beiträge: 1672
Registriert: 16.04.2002

erstellt am: 06. Sep. 2006 23:15    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 gude 10 Unities + Antwort hilfreich

Hallo Dietmar,

bisher wurde ich bei Fragen zu BricsCad von Mervisoft in Wiesbaden sehr gut beraten. http://www.mervisoft.de/
Frage doch mal dort nach.

Gruß
Theodor

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

gude
Mitglied
Dipl.-Ing.

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

Beiträge: 7
Registriert: 28.08.2006

erstellt am: 07. Sep. 2006 17:43    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

Bei mervisoft hatte ich es schon probiert, bevor ich es hier versucht habe.

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

gude
Mitglied
Dipl.-Ing.

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

Beiträge: 7
Registriert: 28.08.2006

erstellt am: 20. Jan. 2007 06:05    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

procedure TForm1.IsQuiescent;
const
  maxZaehler = 10000;
var
  zaehler: integer;
begin
  zaehler:= 0;
  repeat // Warten bis BricsCad bereit ist
    inc(zaehler);
    if zaehler > maxZaehler then begin
      if MessageDlg('Weiter?', mtConfirmation, [mbOk], 0) = idOK then
        zaehler:= 0;
    end;
  until (IIcad.ActiveDocument.GetVariable('CMDActive') = 0) or (zaehler > maxZaehler);
end;

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

gude
Mitglied
Dipl.-Ing.

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

Beiträge: 7
Registriert: 28.08.2006

erstellt am: 20. Jan. 2007 06:10    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

Die temporäre Lisp-Datei wird nicht benötigt.
Mit RunCommand funktioniert es:
IIcad.RunCommand('(command "_-insert" "C:\\10005_D.DXF")');
bzw.
IIcad.RunCommand('(command "_select")');
bzw.
IIcad.RunCommand('(command "_ZOOM" "_E")');
bzw.
IIcad.RunCommand('(command "_Regen")');

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