| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
 | Von Digital Twins bis Hochleistungs-Computing: PNY präsentiert seine Zukunftstechnologien für die Industrie von morgen, eine Pressemitteilung
|
Autor
|
Thema: Assoziationsliste (2048 mal gelesen)
|
Oneida02 Mitglied Verfahrenstechnik
 Beiträge: 4 Registriert: 01.07.2014
|
erstellt am: 01. Jul. 2014 20:27 <-- editieren / zitieren --> Unities abgeben:         
Definieren Sie in einer Funktion eine Assoziationsliste BAUTEILE, die zu den Assoziationsbegriffen WASSER und LUFT mindestens jeweils drei Atome enthält. Die gesamte Assoziationsliste soll auf dem Bildschirm ausgegeben werden (alert). (defun c:test() (setq Temperatur 55) (setq Siedepunkt 100) (setq Gefrierpunkt 0) (setq Sauerstoffgehalt 20) (setq Dichte 1) (setq Druck 101) (setq WASSER (cons Temperatur(cons Siedepunkt( cons Gefrierpunkt())))) (setq LUFT(cons Sauerstoffgehalt(cons Dichte(cons Druck())))) (list WASSER LUFT) ; Liste mit Wasser und LUFT erstellen (setq BAUTEILE (WASSER LUFT)) ; Liste Bauteile zusammensetzen aus WASSER und LUFT (alert(assoc LUFT BAUTEILE(assoc WASSER BAUTEILE))) ; Gibt ein Nachrichtenfenster aus mit der ;Assoziationsliste BAUTEILE ) ----------------- Fehler: Fehlerhafte Funktion. Bräuchte bitte einen Denkanstoß.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
       

 Beiträge: 22497 Registriert: 03.06.2002 Alles
|
erstellt am: 01. Jul. 2014 20:46 <-- editieren / zitieren --> Unities abgeben:          Nur für Oneida02
Auch wenn ich vermute das die Aufgabe nicht verstanden wurde: Kopiere doch eine Zeile nach der anderen in die Befehlszeile (die sinnige VLide scheinst du ja nicht zu nutzen?) So siehst du wo der Fehler ausgeworfen wird und dann kann man es lösen. ------------------ CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Oneida02 Mitglied Verfahrenstechnik
 Beiträge: 4 Registriert: 01.07.2014
|
erstellt am: 01. Jul. 2014 21:01 <-- editieren / zitieren --> Unities abgeben:         
Zitat: Original erstellt von cadffm: Auch wenn ich vermute das die Aufgabe nicht verstanden wurde: Kopiere doch eine Zeile nach der anderen in die Befehlszeile (die sinnige VLide scheinst du ja nicht zu nutzen?) So siehst du wo der Fehler ausgeworfen wird und dann kann man es lösen.
(defun c:test() ; defun = Deklaration der Funktion test c steht für command, so muss beim Aufrufen der Funktion keine Klammern eingegeben werden (setq Temperatur 55) ; Deklaration der Listenvariablen von Wasser (setq Siedepunkt 100) (setq Gefrierpunkt 0) (setq Sauerstoffgehalt 20) ; Deklaration der Listenvariablen von LUFT (setq Dichte 1) (setq Druck 101) (setq WASSER (cons Temperatur(cons Siedepunkt( cons Gefrierpunkt())))) (setq LUFT(cons Sauerstoffgehalt(cons Dichte(cons Druck())))) (list WASSER LUFT) ; Liste mit Wasser und LUFT erstellen (setq BAUTEILE '(WASSER LUFT)) ; Liste Bauteile zusammensetzen aus WASSER und LUFT (alert(assoc LUFT BAUTEILE(assoc 'Luft BAUTEILE(assoc WASSER BAUTEILE(assoc 'WASSER BAUTEILE))))) ; Gibt ein Nachrichtenfenster aus mit der Assoziationsliste BAUTEILE ) ---------------- Fehlerhafte Assoziationsliste. Bin Anfänger auf dem Gebiet... Wobei eine Assoziationsliste eine Liste ist die wiederum Listen enthält, die ich dann über assoc aufrufe und über alert ausgeben kann. Was ist nun falsch? Habe schon alles probiert mit quoted ' und ohne und einige Befehlszeilen verändert. Entweder kommt die Fehlermeldung: Fehlerhafte Assoziationsliste oder fehlerhafte Funktion. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
       

 Beiträge: 22497 Registriert: 03.06.2002 Alles
|
erstellt am: 01. Jul. 2014 21:37 <-- editieren / zitieren --> Unities abgeben:          Nur für Oneida02
??? Gebe den Code in der Befehlszeile durch, natürlich ohne die defun Klammer, also ab (setq... Zeile für Zeile. So kommst du an die Stelle an der es halt und dann findest du die Lösung. Schreibe die Liste Bauteile auf, so wie sie später aussehen wird, das hilft dir Fehler zu erkennen. Meinst du nicht das es eine Liste Bauteile geben soll, welche eine Liste enthält mit dem ersten Listenelement Wasser, gefolgt von mind 3 Atomen. Eine weitere mit dem ersten Eintrag Luft. Dann kann man in Bauteile mit Assoc 'Wasser auf die Liste zugreifen (setq Bauteile '((Wasser "Schaufelrad" 4 Temperatur)(Luft "Windrad" 27 Nitratwert))) Als letzten Fehler gibt es noch Alert, diese Funktion will nur StringParameter.. aber bis du bis dahin kommst dauert es vermutlich etwas. morgentlicher Nachtrag: hier die Werte deiner 3 Variablen (einfach mit !<Variable> in der Befehlszeile abgefragt nachdem man den Code in der Befehlszeile durch ging) Befehl: !Wasser (55 100 0) Befehl: !Luft (20 1 101) Befehl: !Bauteile (WASSER LUFT) Ich sehe: Nirgends eine Assoziationsliste.. ------------------ CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Meldin Mitglied
 
 Beiträge: 398 Registriert: 15.07.2011 ACA2020 Windows10
|
erstellt am: 02. Jul. 2014 13:02 <-- editieren / zitieren --> Unities abgeben:          Nur für Oneida02
Hallo so wie ich das verstehe soll es hier keine var´s geben außer BAUTEILE. Nur ne liste die ausgegeben werden soll. Also nur (alert BAUTEILE) da alert nur Strings verarbeitet dann noch ein princ to string dazu da ja nicht dabei steht da diese in irgendeiner Form gegliedert sein muss. Also bau nur ne liste zusammen und gebe sie aus. ------------------ Gruß Wolfgang  Alias: Rabbit007 und Wolli1 die aus unerklärlichen Gründen aus dem System hier gelöscht wurden.  Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Oneida02 Mitglied Verfahrenstechnik
 Beiträge: 4 Registriert: 01.07.2014
|
erstellt am: 02. Jul. 2014 15:04 <-- editieren / zitieren --> Unities abgeben:         
(defun c:test1() ; defun = Deklaration der Funktion test c steht für command, so muss beim Aufrufen der Funktion keine Klammern eingegeben werden (setq Temperatur 55) ; Deklaration der Listenvariablen von Wasser (setq Siedepunkt 100) (setq Gefrierpunkt 0) (setq Sauerstoffgehalt 20) ; Deklaration der Listenvariablen von LUFT (setq Dichte 1) (setq Druck 101) (setq WASSER (cons Temperatur(cons Siedepunkt( cons Gefrierpunkt())))) (setq LUFT (cons Sauerstoffgehalt(cons Dichte(cons Druck())))) ; Liste mit Wasser und LUFT erstellen (setq BAUTEILE (list WASSER LUFT)) ; Liste Bauteile zusammensetzen aus WASSER und LUFT (alert BAUTEILE) ;Gibt ein Nachrichtenfenster aus mit der Assoziationsliste BAUTEILE ) ------------- Fehlerhafter Argumenttyp; denke es liegt an alert (aber wie konvertier ich eine Liste zu string?) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
       

 Beiträge: 22497 Registriert: 03.06.2002 Alles
|
erstellt am: 02. Jul. 2014 15:14 <-- editieren / zitieren --> Unities abgeben:          Nur für Oneida02
Zitat: Original erstellt von Meldin: da alert nur Strings verarbeitet dann noch ein princ to string dazu da ja nicht dabei steht da diese in irgendeiner Form gegliedert sein muss. Also bau nur ne liste zusammen und gebe sie aus.
Schau dir die String Funktionen in der Autocad-Hilfe an: Klick Aber dann bleibt es noch immer bei der Aussage das du überhaupt keine Assoziationsliste hast und nach der Aufgabenstellung zu urteilen solltest du sowas aufbauen? Generell antwortest du in etwas merkwürdiger Form auf Antworten, machst du das ganz bewußt so? ------------------ CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Meldin Mitglied
 
 Beiträge: 398 Registriert: 15.07.2011 ACA2020 Windows10
|
erstellt am: 02. Jul. 2014 15:23 <-- editieren / zitieren --> Unities abgeben:          Nur für Oneida02
Ich glaube langsam das du hier nicht die ganze Aufgabenstellung bereitgestellt hast da du immer noch an deiner listen Verwurstung festhältst. Es wurde hier dir schon mehrfach gesagt das du keine Assoziationsliste hast. ------------------ Gruß Wolfgang  Alias: Rabbit007 und Wolli1 die aus unerklärlichen Gründen aus dem System hier gelöscht wurden.  Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
neurosis Mitglied dipl.ing.
 
 Beiträge: 224 Registriert: 22.08.2006
|
erstellt am: 02. Jul. 2014 15:59 <-- editieren / zitieren --> Unities abgeben:          Nur für Oneida02
moin, (setq lst1 '(x 1 2 3)) (setq lst2 '(y 4 5 6)) (setq lst3 (list (cons 'z (list lst1 lst2)))) mit (cdr (assoc 'z lst3)) erhaelst du die assozierten werte von z, mit (cdr (assoc 'x (cdr (assoc 'z lst3)))) die von x fensterausgabe mit (alert (vl-princ-to-string lst3)) gruss marco ------------------ Marco Heuer www.arc-aachen.de Airport Office Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Oneida02 Mitglied Verfahrenstechnik
 Beiträge: 4 Registriert: 01.07.2014
|
erstellt am: 02. Jul. 2014 18:40 <-- editieren / zitieren --> Unities abgeben:         
|