Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  HB (Höhenberechnung)

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:  HB (Höhenberechnung) (890 mal gelesen)
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: 24. Nov. 2014 16: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

Servus, geht um das LSP HB (Höhenberechnung) von www.cadwerk.com.

Nachdem meine Schützlinge immer wieder mal vergessen die Vermessungspunkte zu ändern (Attribut auf Basispunkt) stell sich die Frage ob man die Auswahl was alles verwendet werden darf weiter einschränken kann. Nur Blöcke mit bestimmten Namen oder ob Prüfen ob das Attribut auf 0,0 liegt und mit einer Meldung abbrechen kann?

In diesem Teil des Codes wird der Punkt ausgewählt und ob er den Erlaubt ist. ("TEXT" "ATTRIB" "MTEXT" "DTEXT" "RTEXT")

Code:

(defun HB_F_Getpoint (msg / p_tmp z_tmp enx_tmp ent_tmp)
    (if (not (setq enx_tmp (nentsel msg)))
  (HB_F_Abort "\nNichts ausgewählt")
  (progn (setq ent_tmp (entget (car enx_tmp)))
(if (member (cdr (assoc 0 ent_tmp))
    '("TEXT" "ATTRIB" "MTEXT" "DTEXT" "RTEXT" )
    ) ;_ Ende von member
      (setq p_tmp (cdr (assoc 10 ent_tmp))
    z_tmp (distof (cdr (assoc 1 ent_tmp)) 2)
      ) ;_ Ende von setq
      (HB_F_Abort
  "\nGewähltes Element enthält keinen Text"
      ) ;_ Ende von HB_F_Abort
) ;_ Ende von if
  ) ;_ Ende von progn
    ) ;_ Ende von if
   
    (setq HB_Container (append HB_Container (list (car enx_tmp))))
    (redraw (car enx_tmp) 3)
    (princ (rtos z_tmp 2 hb_genau))
   
    (HB_F_Koord p_tmp z_tmp)
) ;defun HB_F_Getpoint


------------------
<----- Bitte Systeminfo eintragen, warum siehst du hier. "Ist bestimmt nicht das schönste Projekt auf Erden, aber läuft vielleicht.". Schöne Grüsse aus der Steiermark  Bernd P. Sport ist Mord
Rekorde: Scalelist>11727, Fehler>34365, Layerfilter>XXXX

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: 25. Nov. 2014 07:23    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 Bernd P 10 Unities + Antwort hilfreich

Hallo Bernd,
hier schon mal ein Ansatz, wie Du den Blocknamen prüfen kannst, über den GC 330 des Attributes kommst Du an den Block. In meinem Beispiel heißt der erlaubte Block "PUNKT".

Code:

(defun c:test ( / OBJ OBJBLOCK)
  (if (and(setq obj (car (nentsel "\nAttribut picken")))
          (=(cdr(assoc 0 (entget obj)))"ATTRIB"))
    (if (and(setq objBlock(cdr(assoc 330 (entget obj))))
            (member(strcase(cdr(assoc 2 (entget objBlock))))
                  '("PUNKT")))
      (alert (strcat "Es wurde ein Attribut vom Block \""
                      (cdr(assoc 2 (entget objBlock)))"\""
                    "ausgewählt."))
      (alert (strcat "Es wurde ein Attribut vom Block \""
                      (cdr(assoc 2 (entget objBlock)))"\""
                    "ausgewählt, dieser ist nicht zulässig.")))
    (alert "Es wurde kein Attribt gepickt."))
  )

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

Jörn
http://www.bosse-engineering.com

Orthogonalvermassung Youtube

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: 16. Jan. 2015 08:42    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

Servus, sorry zwischendurch keine zeit gehabt... danke joern

Es wird jetzt auch der Blocknamen geprüft.

Code:
(defun HB_F_Getpoint (msg / p_tmp z_tmp enx_tmp ent_tmp OBJBLOCK)
    (if (not (setq enx_tmp (nentsel msg)))
  (HB_F_Abort "\nNichts ausgewählt")
  (progn (setq ent_tmp (entget (car enx_tmp)))
        (setq OBJBLOCK(cdr(assoc 330 (entget (car enx_tmp)))))
(if (and
(member(strcase(cdr(assoc 2 (entget OBJBLOCK))))
  '("KOT_HOEHE_LP" "KOT_HOEHE_LP_VMP"))
(member (cdr (assoc 0 ent_tmp))
'("TEXT" "ATTRIB" "MTEXT" "DTEXT" "RTEXT")
)) ;_ Ende von member
      (setq p_tmp (cdr (assoc 10 ent_tmp))
    z_tmp (distof (cdr (assoc 1 ent_tmp)) 2)
      ) ;_ Ende von setq
      (HB_F_Abort
  "\nFalscher Block, bitte Block updaten!"
      ) ;_ Ende von HB_F_Abort
) ;_ Ende von if
  ) ;_ Ende von progn
    ) ;_ Ende von if
   
    (setq HB_Container (append HB_Container (list (car enx_tmp))))
    (redraw (car enx_tmp) 3)
    (princ (rtos z_tmp 2 hb_genau))
   
    (HB_F_Koord p_tmp z_tmp)
) ;defun HB_F_Getpoint

------------------
<----- Bitte Systeminfo eintragen, warum siehst du hier. "Ist bestimmt nicht das schönste Projekt auf Erden, aber läuft vielleicht.". Schöne Grüsse aus der Steiermark  Bernd P. Sport ist Mord
Rekorde: Scalelist>11727, Fehler>34365, Layerfilter>XXXX

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