Author Topic: help please  (Read 2817 times)

0 Members and 1 Guest are viewing this topic.

allanp

  • Guest
help please
« on: November 24, 2004, 05:38:49 PM »
Hi can anyone help?
Ive just written what i thought was a good file for reading data from external files butwhen trying to load using visual lisp it keeps telling me i have a malformed list on input.
I just cant see where its wrong.

Code: [Select]

(DEFUN C:Allan()
(GRAPHSCR)
 
(repeat 9      
  (Setq Choice (Getreal"\ NPlease enter choice:- 1  Bolt  2  Nut  3  Washer  " ))
 
  (IF (= Choice 1)            
    (REPEAT 1
      (INITGET 1 "10 12 16")  
      (terpri)
      (SETQ D1 (GETKWORD "ENTER DIA OF BOLT 10/12/16   "))  
      (PRINC)
      (SETQ D2 (ATOI D1))
      (INITGET 1)
      (SETQ P1 (GETPOINT "\NPICK CENTRE"))    
      (PRINC)
      (SETQ FILEDES (OPEN"a:Allana.DAT" "r" ))
      (REPEAT 5        
 (SETQ LIN (READ-LINE FILEDES))
 (SETQ DIA (SUBSTR LIN 2 2))
 (SETQ DIA2 (ATOI DIA))
 (IF (= DIA2 D2)
   (SETQ SIZE (SUBSTR LIN 9 4))
 )
      )
      (CLOSE FILEDES)      
      (SETQ SIZE (ATOF SIZE))
      (SETQ R2 (/ SIZE 2.0))
      (SETQ R1 (/ D2 2.0))
      (COMMAND "CIRCLE" P1 R1)      
      (COMMAND "CIRCLE" P1 R2)
      (COMMAND "POLYGON" "4" P1 "C" R2)
    )
  )
  (IF (= Choice 2)      
    (REPEAT 1
      (INITGET 1 "10 12 16")
      (terpri)
      (SETQ D1 (GETKWORD "ENTER DIA OF  NUT 10/12/16  "))  
      (terpri)
      (PRINC)
      (SETQ D2 (ATOI D1))
      (INITGET 1)
      (SETQ P1 (GETPOINT "\NPICK CENTRE"))  
      (PRINC)
      (SETQ FILEDES (OPEN "a:Allanc.DAT" "r" ))
      (REPEAT 5        
 (SETQ LIN (READ-LINE FILEDES))
 (SETQ DIA (SUBSTR LIN 2 2))
 (SETQ DIA2 (ATOI DIA))
 (IF (= DIA2 D2)
   (SETQ SIZE (SUBSTR LIN 9 4))
 )
      )
      (CLOSE FILEDES)      
      (SETQ SIZE (ATOF SIZE))
      (SETQ R2 (/ SIZE 2.0))
      (SETQ R1 (/ D2 2.0))
      (COMMAND "CIRCLE" P1 R1)      
      (COMMAND "POLYGON" "6" P1 "C" R2)
    )
  )
  (IF (= Choice 3)      
    (REPEAT 1
      (INITGET 1 "10 12 16")
      (terpri)
      (SETQ D1 (GETKWORD "ENTER DIA OF WASHER 10/12/16  "))  
      (terpri)
      (PRINC)
      (SETQ D2 (ATOI D1))
      (INITGET 1)
      (SETQ P1 (GETPOINT "\NPICK CENTRE"))    
      (PRINC)
      (SETQ FILEDES (OPEN "a:Allanb.DAT"  "r" ))
      (REPEAT 5        
 (SETQ LIN (READ-LINE FILEDES))
 (SETQ DIA (SUBSTR LIN 2 2))
 (SETQ DIA2 (ATOI DIA))
 (IF (= DIA2 D2)
   (SETQ SIZE (SUBSTR LIN 9 4))
 )
      )
      (CLOSE FILEDES)      
      (SETQ SIZE (ATOF SIZE))
      (SETQ R2 (/ SIZE 2.0))
      (SETQ R1 (/ D2 2.0))
      (COMMAND "CIRCLE" P1 R1)      
      (COMMAND "CIRCLE" P1 R2)
    )
  )
 
)
(PRINC)


Thanks again
Allan

code tags added, 11.25.04, smadsen

Mark

  • Custom Title
  • Seagull
  • Posts: 28762
help please
« Reply #1 on: November 24, 2004, 06:06:36 PM »
Well there are several things that I see.
1. malformed list on input = last paren missing, the one for the 'defun'
2. you had \NPICK CENTER the '\N' needs to be \n lower case
3. you have (open "a:Allanb.DAT" "r" ) the 'a:' points nowhere. you need a:\\allanb.dat

now lets try and run it..............
TheSwamp.org  (serving the CAD community since 2003)

Mark

  • Custom Title
  • Seagull
  • Posts: 28762
help please
« Reply #2 on: November 24, 2004, 06:15:54 PM »
nope! need to see the sturcture of your 'Allanb.DAT' file if you need more help. Couple more things, you don't really need all the '(terpri)' and '(princ)' in there. You should localize all those variables as well. Sorry, I'm not *trying* to pick apart you code.
TheSwamp.org  (serving the CAD community since 2003)

CAB

  • Global Moderator
  • Seagull
  • Posts: 10401
help please
« Reply #3 on: November 24, 2004, 08:37:53 PM »
Allan
Take a look at this.
Untested 8)
Code: [Select]
(defun c:allan (/ choice d1 d2 p1 filedes dia dia2 size r1 r2)
  (graphscr)
  (repeat 9
    (initget 1 "1 2 3")
    (setq choice (getkword "\ NPlease enter choice:- 1 Bolt 2 Nut 3 Washer "))
    (setq choice (cdr (assoc choice '(("1" . "Bolt") ("2" . "Nut") ("3" . "Washer")))))
    (initget 1 "10 12 16")
    (setq d1 (getkword (strcat "\nEnter dia of " choice " 10/12/16 ")))
    (setq d2 (atoi d1))
    (initget 1)
    (setq p1 (getpoint "\nPick Center"))
    (setq filedes (open "a:\\Allana.DAT" "r"))
    (repeat 5
      (setq lin (read-line filedes))
      (setq dia (substr lin 2 2))
      (setq dia2 (atoi dia))
      (if (= dia2 d2)
        (setq size (substr lin 9 4))
      )
    )
    (close filedes)
    (setq size (atof size))
    (setq r2 (/ size 2.0))
    (setq r1 (/ d2 2.0))

    (cond
      ((= choice "Bolt")
       (command "CIRCLE" p1 r1)
       (command "CIRCLE" p1 r2)
       (command "POLYGON" "4" p1 "C" r2)
      )
      ((= choice "Nut")
       (command "CIRCLE" p1 r1)
       (command "POLYGON" "6" p1 "C" r2)
      )
      ((= choice "Washer")
       (command "CIRCLE" p1 r1)
       (command "CIRCLE" p1 r2)
      )
    )
  )
  (princ)
)
I've reached the age where the happy hour is a nap. (°¿°)
Windows 10 core i7 4790k 4Ghz 32GB GTX 970
Please support this web site.

allanp

  • Guest
help please
« Reply #4 on: November 28, 2004, 05:01:22 PM »
thanks for all your help
will try a bit harder. lol