Help a beginner, please

Discussion in 'AutoCAD' started by VikCAD04, Nov 5, 2004.

  1. VikCAD04

    VikCAD04 Guest

    Ok, here's my lisp:
    ; ISSUED FOR CONSTRUCTION STAMP
    (DEFUN C:test (/ CMD OSN BS BN)
    (SETQ CMD (GETVAR "CMDECHO"))
    (SETQ OSN (GETVAR "OSMODE"))
    (SETVAR "OSMODE" 0)
    (SETVAR "CMDECHO" 0)
    (COMMAND "ZOOM" "EXTENTS")
    (SETQ VS (GETVAR "VIEWSIZE"))
    (setq BS (ssget "X" '((0 . "INSERT") (2 . "*CORP*"))))
    (SETQ BN (cdr (assoc 2 (entget (ssname bs 0)))))
    (SETQ SC (cdr (assoc 41 (entget (ssname bs 0)))))
    (SETQ VX (/ VS SC))
    (INITGET "D I")
    (SETQ UI (GETKWORD "\n Is this a Demolition (D) or Installation (I)?: "))
    (IF (NOT UI)
    (SETQ UI "I"))

    (COMMAND ".LAYER" "N" "STAMPS" "C" "249" "STAMPS" "S" "STAMPS" "")
    (COMMAND "LIMITS" "OFF")
    ;IF D-SIZE THEN DO THIS

    (COND
    ((< VX 25)
    (IF (EQ UI "D")
    (COMMAND ".-INSERT" "IFCD-D" "0,0" SC "" ""))
    (IF (= UI "I")
    (COMMAND ".-INSERT" "IFCI-D" "0,0" SC "" ""))))
    (COMMAND ".-RENAME" "B" BN "CORP-D")))

    ;IF E-SIZE THEN DO THIS
    (COND
    ((> VX 30)
    (IF (EQ UI "D")
    (COMMAND ".-INSERT" "IFCD-E" "0,0" SC "" ""))
    (IF (= UI "I")
    (COMMAND ".-INSERT" "IFCI-E" "0,0" SC "" ""))
    (COMMAND ".LIMITS" "" "44,34")))
    (COMMAND ".-REN" "B" BN "CORP-E")))
    (COMMAND ".DRAWORDER" "L" "" "B"
    ".-LAYER" "LO" "STAMPS" "SET" "0" "")
    (IF (SETQ SSIMAGE (SSGET "X" '((0 . "IMAGE"))))
    (COMMAND ".DRAWORDER" SSIMAGE "" "B"))
    (SETVAR "CMDECHO" CMD)
    (SETVAR "OSMODE" OSN)
    (PRINT "THIS DRAWING HAS BEEN ISSUED FOR CONSTRUCTION")
    (PRINC))


    And what it does is, when BN value is set to whatever is the current name of the block, and then it is changed to the proper name. if i run the same routine again, it flips out because BN is still not changed after it was renamed.
    Why does it remember the OLD BN?
    basically i can't run this routine twice without getting a error.
    HELP HELP HELP, also anything that could be simplified please let me know.

    Viktor
     
    VikCAD04, Nov 5, 2004
    #1
  2. VikCAD04

    CAB2k Guest

    This may not fix it but it will get you closer.
    ; ISSUED FOR CONSTRUCTION STAMP
    (defun c:test (/ cmd osn bs bn vs sc vx ui b_name c_name)
    (setq cmd (getvar "CMDECHO"))
    (setq osn (getvar "OSMODE"))
    (setvar "OSMODE" 0)
    (setvar "CMDECHO" 0)
    (command "ZOOM" "EXTENTS")
    (setq vs (getvar "VIEWSIZE"))
    (setq bs (ssget "X" '((0 . "INSERT") (2 . "*CORP*"))))
    (setq bn (cdr (assoc 2 (entget (ssname bs 0)))))
    (setq sc (cdr (assoc 41 (entget (ssname bs 0)))))
    (setq vx (/ vs sc))

    (command ".LAYER" "N" "STAMPS" "C" "249" "STAMPS" "S" "STAMPS" "")
    (command "LIMITS" "OFF")

    (initget "D I")
    (setq ui (getkword "\n Is this a Demolition (D) or Installation (I)?: "))
    (setq ui (cond (ui) ("I")))
    (setq b_name (strcat "IFC" ui))

    ;IF D-SIZE THEN DO THIS

    (if (< vx 25)
    (setq b_name (strcat b_name "-D")
    c_name "CORP-D"
    )
    ;; ELSE drawing is E size
    (setq b_name (strcat b_name "-E")
    c_name "CORP-E"
    )
    )
    (command ".-INSERT" b_name "0,0" sc "" "")
    (command ".-RENAME" "B" bn c_name)

    (command ".DRAWORDER" "L" "" "B" ".-LAYER" "LO" "STAMPS" "SET" "0" "")
    (if (setq ssimage (ssget "X" '((0 . "IMAGE"))))
    (command ".DRAWORDER" ssimage "" "B")
    )
    (setvar "CMDECHO" cmd)
    (setvar "OSMODE" osn)
    (print "THIS DRAWING HAS BEEN ISSUED FOR CONSTRUCTION")
    (princ)
    )
     
    CAB2k, Nov 6, 2004
    #2
  3. VikCAD04

    jregier Guest

    You appear to be renaming the block to CORP-D after the first cond regardless of any settings. I can't load the code as submitted, perhaps you've added some extra brackets - check your balancing brackets following the first cond statements.
     
    jregier, Nov 6, 2004
    #3
  4. VikCAD04

    dlb1 Guest

    try it like this i found a couple of places with to many brackets

    ; ISSUED FOR CONSTRUCTION STAMP
    (defun c:test (/ cmd osn bs bn vs sc vx ui b_name c_name))
    (setq cmd (getvar "CMDECHO"))
    (setq osn (getvar "OSMODE"))
    (setvar "OSMODE" 0)
    (setvar "CMDECHO" 0)
    (command "ZOOM" "EXTENTS")
    (setq vs (getvar "VIEWSIZE"))
    (setq bs (ssget "X" '(0 . "INSERT")(2 . "*CORP*"))))
    (setq bn (cdr (assoc 2 (entget (ssname bs 0))))
    (setq sc (cdr (assoc 41 (entget (ssname bs 0)))))
    (setq vx (/ vs sc))

    (command ".LAYER" "N" "STAMPS" "C" "249" "STAMPS" "S" "STAMPS" "")
    (command "LIMITS" "OFF")

    (initget "D I")
    (setq ui (getkword "\n Is this a Demolition (D) or Installation (I)?: "))
    (setq ui (cond (ui) ("I"))))
    (setq b_name (strcat "IFC" ui))

    (if (< vx 25)) ;IF D-SIZE THEN DO THIS
    (setq b_name (strcat b_name "-D")
    c_name "CORP-D"
    )
    ;; ELSE drawing is E size
    (setq b_name (strcat b_name "-E"))
    c_name "CORP-E"
    )
    )
    (command ".-INSERT" b_name "0,0" sc "" "")
    (command ".-RENAME" "B" bn c_name)

    (command ".DRAWORDER" "L" "" "B" ".-LAYER" "LO" "STAMPS" "SET" "0" "")
    (if (setq ssimage (ssget "X" '((0 . "IMAGE")))))
    (command ".DRAWORDER" ssimage "" "B")
    )
    (setvar "CMDECHO" cmd)
    (setvar "OSMODE" osn)
    (print "THIS DRAWING HAS BEEN ISSUED FOR CONSTRUCTION")
    (princ)
    )
     
    dlb1, Nov 8, 2004
    #4
Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.