Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Abstand

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:  Abstand (1378 mal gelesen)
RoyCAD
Mitglied
Dipl-Ing Energietechnik


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

Beiträge: 206
Registriert: 24.05.2004

Win XP
AutoCAD2008-2010
Inventor 2008-2010
Productstream Compass
P4 3,0GHz
512MB Ram

erstellt am: 07. Sep. 2004 12:51    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 habe grade ein Lisp geschrieben der erzeug eine Bemaßungkette. Ich weis aber nicht wie soll ich der Abstand zischen dem Element und Bemaßung definieren. Hat  jemand eine Idee wie kann ich das machen.
Ich kämpfe mit dem „Programm“ schon eine Weile.
(setq pt1 ( getpoint  "Aquapanle wählen"))
(setq ptendh (getpoint "Endpunkt wählen"))
(setq ptlegh (list (nth 0 pt1)  (nth 1 ptendh) 0.0))


 
(setq pt2  (list  (nth 0 pt1) ( + (nth 1 pt1)  (cadt:cm 11.3)) 0.0))
(command "bemlinear" pt1 pt2 pt1 )


(setq pt3 (list (nth 0 pt1) (- (nth 1 ptlegh) (cadt:cm 51.2)) 0.0))
(command "bemlinear" pt2 pt3 pt2 )
..........................

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

Schachinger
Ehrenmitglied V.I.P. h.c.
Konstrukteur



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

Beiträge: 2040
Registriert: 08.04.2002

erstellt am: 07. Sep. 2004 13: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 Nur für RoyCAD 10 Unities + Antwort hilfreich

hallo RoyCAD!

so einfach ist das nicht zu beantworten deine gewünschte position der bemaßung ja von mehreren faktoren abhängig sein wird?!

aber mal ein paar gedanken dazu...
angenommen du hast zwei punkte die du vermaßen willst (schräg im raum). der 3te punkt der für die bemaßungsposition zuständig ist soll z.b. 10 zeichnungseinzeiten parallel zur achse punkt1-punkt2 laufen (wär z.b. eine logischer vermutung) dann mal diese zeile zu gemüte führen:

Code:
(setq pt3 (polar pt1 (+ (angle pt1 pt2) (/ PI 2)) 10.0))

mit "angle" wird der winkel zw. pt1 und pt2 gemessen. dann PI/2 (90° in radiant) dazuaddiert. dann mit einer polaren punktangabe ausgehend von pt1 10 zeichnungseinzeiten in der normalen zur geraden pt1-pt2 gegangen....

wichtig: den objektfang befor du linien/bemaßungen erstellen lässt abstellen! also die variabe "osmode" in einer temporären variable zwischenspeichern - auf 0 setzen und nach abschluss wieder zurücksetzen! sonst gibts u.U. ziemlich komische ergebnisse 

------------------
mfg Siegfried Schachinger
http://www.tbschatz.at

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

RoyCAD
Mitglied
Dipl-Ing Energietechnik


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

Beiträge: 206
Registriert: 24.05.2004

Win XP
AutoCAD2008-2010
Inventor 2008-2010
Productstream Compass
P4 3,0GHz
512MB Ram

erstellt am: 07. Sep. 2004 16: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

hallo Schachinger

Irgendwie geht das nicht. Ich habe gedacht das vielleicht kann man das die Variable DIMEXO kann das Problem lösen.

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

Schachinger
Ehrenmitglied V.I.P. h.c.
Konstrukteur



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

Beiträge: 2040
Registriert: 08.04.2002

erstellt am: 07. Sep. 2004 16: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 RoyCAD 10 Unities + Antwort hilfreich


bemlinear.jpg

 
DIMEXO bestimmt wo der anfang der "hilfslinie" ist. das hat aber nichts mit der position der richtigen bemaßungslinie und des textes zu tun!

zeichne mal eine linie und dann:

Code:

(setq pt1 (getpoint "1ter punkt: "))
(setq pt2 (getpoint "2ter punkt: "))
(setq osmode_save (getvar "osmode"))
(setvar "osmode" 0)
(setq pt3 (polar pt1 (+ (angle pt1 pt2) (/ PI 2)) 10.0))
(command "bemlinear" pt1 pt2 pt3 )
(setvar "osmode" osmode_save)


dann kommt bei mir das raus was du auf dem bild siehst! das müsste dir eigendlich etwas weiterhelfen oder?

------------------
mfg Siegfried Schachinger
http://www.tbschatz.at

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

RoyCAD
Mitglied
Dipl-Ing Energietechnik


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

Beiträge: 206
Registriert: 24.05.2004

Win XP
AutoCAD2008-2010
Inventor 2008-2010
Productstream Compass
P4 3,0GHz
512MB Ram

erstellt am: 08. Sep. 2004 12:31    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 Schachinger

Deine Code ist ja richtig aber ich will eine Bemaßungskette. Zwei Maßen von insgesamt sieben soll der User bestimmen. Es funktioniert alles nur der Abstand zwischen den Element und Bemaßung ist zu klein und ich weiß nicht wie soll ich das definieren.


(defun C:ver (/ pt1 pt2 pt3 pt4 pt5 pt6 pt7 pt8 )

(command "layer" "machen" "klafs_schr" "")


(setq pt1 ( getpoint  "Aquapanle wählen"))
(setq ptendh (getpoint "Endpunkt wählen"))
(setq ptlegh (list (nth 0 ptendh)  (nth 1 pt1) 0.0))


 
(setq pt2  (list  (+ (nth 0 pt1) (cadt:cm 11.3))  (nth 1 pt1) 0.0))
(command "bemlinear" pt1 pt2 pt1 )


(setq pt3 (list (- (nth 0 ptlegh)(cadt:cm 51.2)) (nth 1 pt1)  0.0))
(command "bemlinear" pt2 pt3 pt2 )

(setq pt4  (list (+ (nth 0 pt3) (cadt:cm 3.7))  (nth 1 pt1) 0.0))
(command "bemlinear" pt3 pt4 pt3 )

(setq pt5  (list (+ (nth 0 pt4)(cadt:cm 47.5)) (nth 1 pt1) 0.0))
(command "bemlinear" pt4 pt5 pt4)


(setq pt6  (list (nth 0 pt5)  (- (nth 1 pt5) (cadt:cm 3.7)) 0.0))
(setq ptendv (getpoint "Endpunkt wählen"))
(setq ptlegv (list (nth 0 pt5) (nth 1 ptendv) 0.0))
(command "bemlinear" pt5 pt6 pt5 )
 
(setq pt7  (list  (nth 0 pt5) (+ (nth 1 ptlegv)(cadt:cm 11.3)) 0.0))

(command "bemlinear" pt6 pt7 pt6 )

(setq pt8  (list (nth 0 pt5) (- (nth 1 pt7) (cadt:cm 11.3)) 0.0))
 
(command "bemlinear" pt7 pt8 pt7 )


)

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

Schachinger
Ehrenmitglied V.I.P. h.c.
Konstrukteur



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

Beiträge: 2040
Registriert: 08.04.2002

erstellt am: 08. Sep. 2004 12: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 RoyCAD 10 Unities + Antwort hilfreich

du hast überall die zeilen
Code:
(command "bemlinear" pt1 pt2 pt1 )

drinnen!
erster punkt: anfangspunkt der bemaßung
zweiter punkt: endpunkt der bemaßung
dritter punkt: POSITON DER BEMASSUNG

was wäre es wenn du diese zeile durch

Code:

(setq pt12 (polar pt1 (+ (angle pt1 pt2) (/ PI 2)) 10.0))
(command "bemlinear" pt1 pt2 pt12 )


ersetzt?
das selbe spiel natürlich auch für die anderen bemaßungen!

und natürlich nicht auf das ausschalten des ofangs vergessen! sonst springt dir die bemaßung ev. wieder wo anders hin /oder zurück auf das zu vermaßende element.

Code:

(setq osmode_save (getvar "osmode"))
(setvar "osmode" 0)
...
hier die zeilen in denen du die bemaßungen erstellen lässt
...
(setvar "osmode" osmode_save)

jetzt das ganze etwas klarer geworden? denn du hast in dem gerade gepostetetn lisp keine einzige zeile von mir übernommen gehabt ?! 

------------------
mfg Siegfried Schachinger
http://www.tbschatz.at

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

Schachinger
Ehrenmitglied V.I.P. h.c.
Konstrukteur



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

Beiträge: 2040
Registriert: 08.04.2002

AIS2009, PDSU 2012-2015, Plant 3D 2011-2015, NavisWorks 2010-2015, Win7 64bit SP1, Intel Core i7 870, 16 GB RAM, Quadro 2000D

erstellt am: 10. Sep. 2004 07: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 RoyCAD 10 Unities + Antwort hilfreich

hast du das problem lösen können?....

------------------
mfg Siegfried Schachinger
http://www.tbschatz.at

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

RoyCAD
Mitglied
Dipl-Ing Energietechnik


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

Beiträge: 206
Registriert: 24.05.2004

Win XP
AutoCAD2008-2010
Inventor 2008-2010
Productstream Compass
P4 3,0GHz
512MB Ram

erstellt am: 10. Sep. 2004 12:28    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 Schachinger
Ja ich habe das Problem gelöst und so sieht es das end Ergebnis.


(defun C:ver (/ pt1 pt2 pt3 pt4 pt5 pt6 pt7 pt8 )

(command "layer" "machen" "schr" "")


(setq pt1 ( getpoint  "Start wählen"))
(setq ptendh (getpoint "Endpunkt wählen"))
(setq ptlegh (list (nth 0 pt1)  (nth 1 ptendh) 0.0))

(setq pta (list (+ (nth 0 pt1 ) (cadt:cm 15.0)) (nth 1 pt1) 0.0 ))

 
(setq pt2  (list  (nth 0 pta) ( + (nth 1 pt1)  (cadt:cm 11.3)) 0.0))
(command "bemlinear" pta pt2 pta )


(setq pt3 (list (nth 0 pta) (- (nth 1 ptlegh) (cadt:cm 51.2)) 0.0))
(command "bemlinear" pt2 pt3 pt2 )

(setq pt4  (list (nth 0 pta) ( + (nth 1 pt3) (cadt:cm 3.7)) 0.0))
(command "bemlinear" pt3 pt4 pt3 )

(setq pt5  (list (nth 0 pta) ( + (nth 1 pt4) (cadt:cm 47.5)) 0.0))
(command "bemlinear" pt4 pt5 pt4)


(setq ptendv (getpoint "Endpunkt wählen"))
(setq ptlegv (list (nth 0 ptendv) (nth 1 ptendh) 0.0))
(command "bemlinear" pt5 pt6 pt5 )
(setq pta1 (list (nth 0 ptendh) (+ (nth 1 ptendh) (cadt:cm 15.0)) 0.0))

(setq pt6  (list ( - (nth 0 ptendh) 3.7) (nth 1 pta1) 0.0))
(command "bemlinear" pta1 pt6 pta1 ) 
 
(setq pt7  (list ( + (nth 0 ptlegv) (cadt:cm 11.3)) (nth 1 pta1) 0.0))

(command "bemlinear" pt6 pt7 pt6 )

(setq pt8  (list ( - (nth 0 pt7) (cadt:cm 11.3)) (nth 1 pta1) 0.0))
 
(command "bemlinear" pt7 pt8 pt7 )


)

Ich habe 4 solche Programme geschrieben jetzt brauche ich eine „if“ abfrage kannst du mir vielleicht ein Tipp geben. Ich meine wenn der User angibt in der Befehlzeile Bemaßung oben oder unten (Vertikal, Horizontal) oder links, rechts das der richtige Programm dabei ausgeführt wird. Wie kann ich das am besten hinkriegen.

Gruß
RoyCAD   

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

Schachinger
Ehrenmitglied V.I.P. h.c.
Konstrukteur



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

Beiträge: 2040
Registriert: 08.04.2002

erstellt am: 13. Sep. 2004 08: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 RoyCAD 10 Unities + Antwort hilfreich

hallo RoyCAD.
mal sehn ob ich dich richtig verstanden habe: du hast bereits 4 fertige lisproutinen und willst eine übergeordnete lisp damit du auswählen kannst welche davon angewendet wird?

dann guck dir mal das an:

Code:

(defun xx1 ()
  (princ "1tes Unterpr.")
  )

(defun xx2 ()
  (princ "2tes Unterpr.")
  )

(defun c:xx ()
  (initget "A B")
  (setq xy (getkword "Teil wählen (A/B): "))
  (cond
   ((= xy "A") (xx1))
   ((= xy "B") (xx2))
   (t nil)
   )
  (princ)
)



ist nur mal ein beispielcode damit du den grundsätzlichen aufbau verstehst. XX1 und XX2 wären dann zb. 2 von deinen 4 bereits fertigen lisproutinen. aufgerufen wird das ganzde durch XX wo der user auswählt welches unterprog. ausgeführt werden soll. es gäbe für deinen fall natürlich elegantere varianten aber so gehts am schnellsten da du die 4 lisps ja schon fertig hast.
 

------------------
mfg Siegfried Schachinger
http://www.tbschatz.at

[Diese Nachricht wurde von Schachinger am 13. Sep. 2004 editiert.]

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

RoyCAD
Mitglied
Dipl-Ing Energietechnik


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

Beiträge: 206
Registriert: 24.05.2004

Win XP
AutoCAD2008-2010
Inventor 2008-2010
Productstream Compass
P4 3,0GHz
512MB Ram

erstellt am: 13. Sep. 2004 11:03    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

Danke es funktioniert optimal
Gruß
RoyCAD

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