Ayuda con esta rutina

Ver el tema anterior Ver el tema siguiente Ir abajo

Ayuda con esta rutina

Mensaje por cyberfantasma el Miér Jul 27, 2016 10:49 pm

Estimados amigos

Tengo la siguiente rutina, rescatada de hispacad, ella ingresa cotas en perfiles con un determinado bloque, el asunto con esta rutina es que corre sin ningún problema, pero si por algún motivo da error deja de funcionar, el problema es que no vuelve a correr nunca mas en el ordenador donde falló, la pregunta es si existe alguna manera de corregir este problema o si existe alguna forma de borrar del autocad el historial del uso de esta rutina y así poder usarla nuevamente, muy agradecido por la ayuda brindada.

Saludos

; Acota elevaciones con cota de referencia indicada por el usuario.
; Por G.Calvo - gerardogqa@yahoo.es
;;;oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
(defun c:cota (/ reg-key htxt vfact gfact datos actualizar set-ref entrada cota dzr nf f)
  (vl-load-com)
  (if (not
         (progn (setq reg-key (strcat "HKEY_CURRENT_USER\\" (vlax-product-key) "\\GCM-conf\\datos-cotaref"))
                (setq datos (vl-registry-read reg-key "datos-cotaref"))
         )
      )
     (vl-registry-write reg-key "datos-cotaref" "(\"\" \"\" 1 1 2 2)")
  )
  (setq nf (vl-filename-mktemp nil nil ".lsp"))
  (setq f (open nf "w"))
  (setq datos (if datos
                 (read datos)
                 (list "" "" 1 1 2 2)
              )
  )
  (setq vfact (/ (nth 3 datos) (nth 2 datos)))
  (setq gfact (nth 2 datos))
  (setq htxt (nth 3 datos))
  (setq dzr (getvar "dimzin"))
  (write-line
     "opscotaref:dialog{label=\"Opciones\";:edit_box{label=\"Prefijo:\";key=\"pref\";edit_width=10;}
:edit_box{label=\"Sufijo:\";key=\"suf\";edit_width=10;}
:edit_box{label=\"Escala horizontal=1:\";key=\"hesc\";edit_width=3;}
:edit_box{label=\"Escala vertical= 1:\";key=\"vesc\";edit_width=3;}
:edit_box{label=\"Altura texto (mm):\";key=\"altxt\";edit_width=10;}
:popup_list{label=\"Precisión\";key=\"prec\";list=\"0\\n0.0\\n0.00\\n0.000\\n0.0000\\n0.00000\";
edit_width=9;}ok_cancel_err;}"
     f
  )
  (close f)
  (setvar 'dimzin 0)
  (setvar 'attmode 1)
  (setvar 'attreq 1)
  (if (not (tblobjname "STYLE" "ROMANS"))
     (entmake '((0 . "STYLE")
                (100 . "AcDbSymbolTableRecord")
                (100 . "AcDbTextStyleTableRecord")
                (2 . "ROMANS")
                (70 . 0)
                (3 . "ROMANS")
               )
     )
  )
  (setvar "TEXTSTYLE" "ROMANS")
  (if (not (tblobjname "block" "ROMANS"))
     (progn (entmake '((0 . "block") (2 . "ROMANS") (8 . "0") (70 . 2) (10 0.0 0.0 0.0)))
            (entmake '((0 . "polyline") (8 . "G-SIMBOLOGIA") (62 . 7)))
            (entmake '((0 . "vertex") (10 0 0.866025)))
            (entmake '((0 . "vertex") (10 0.5 0.866025)))
            (entmake '((0 . "vertex") (10 0 0)))
            (entmake '((0 . "vertex") (10 -0.5 0.866025)))
            (entmake '((0 . "vertex") (10 0 0.866025)))
            (entmake '((0 . "seqend")))
            (entmake '((0 . "LINE") (8 . "G-SIMBOLOGIA") (62 . 1) (10 -1.5 0) (11 1.5 0)))
            (entmake '((0 . "ATTDEF")
                       (100 . "AcDbEntity")
                       (67 . 0)
                       (410 . "Model")
                       (8 . "G-TEXTOS-NOTAS")
                       (62 . 7)
                       (100 . "AcDbText")
                       (10 -1.94134 5.29604 0.0)
                       (40 . 1.0)
                       (1 . "")
                       (50 . 0.0)
                       (41 . 1.0)
                       (51 . 0.0)
                       (7 . "ROMANS")
                       (71 . 0)
                       (72 . 1)
                       (11 0.0 1.0 0.0)
                       (210 0.0 0.0 1.0)
                       (100 . "AcDbAttributeDefinition")
                       (3 . "COTA")
                       (2 . "COTA")
                       (70 . 0)
                       (73 . 0)
                       (74 . 1)
                       (280 . 1)
                      )
            )
            (entmake '((0 . "endblk")))
     )
  )
  (defun opt nil
     (if (and (>= (setq ind (load_dialog nf)) 0) (new_dialog "opscotaref" ind))
        (progn (set_tile "pref" (nth 0 datos))
               (set_tile "suf" (nth 1 datos))
               (set_tile "hesc" (rtos (nth 2 datos) 2 1))
               (set_tile "vesc" (rtos (nth 3 datos) 2 1))
               (set_tile "altxt" (rtos (nth 4 datos) 2 1))
               (set_tile "prec" (itoa (nth 5 datos)))
               (action_tile "accept" "(actualizar)")
               (start_dialog)
               (unload_dialog ind)
        )
     )
  )
  (defun actualizar (/ hesc vesc altxt)
     (cond ((or (null (setq hesc (distof (get_tile "hesc")))) (<= hesc 0))
            (mode_tile "hesc" 2)
            (set_tile "error" "Debes poner escala HORIZONTAL")
           )
           ((or (null (setq vesc (distof (get_tile "vesc")))) (<= vesc 0))
            (mode_tile "vesc" 2)
            (set_tile "error" "Debes poner escala VERTICAL")
           )
           ((or (null (setq altxt (distof (get_tile "altxt")))) (<= altxt 0))
            (mode_tile "altxt" 2)
            (set_tile "error" "Debes poner altura TEXTO")
           )
           (t
            (setq datos (list (get_tile "pref") (get_tile "suf") hesc vesc altxt (atoi (get_tile "prec"))))
            (setq vfact (/ vesc hesc))
            (setq gfact hesc)
            (setq htxt altxt)
            (vl-registry-write reg-key "datos-cotaref" (vl-prin1-to-string datos))
            (done_dialog)
           )
     )
  )
  (defun set-ref (/ elevref valref)
     (if (and (numberp (setq elevref (cadr (getpoint "\nPunto para referencia de elevación: "))))
              (numberp (setq valref (getreal "\nCota de elevacion en ese punto:")))
         )
        (eval
           (list 'defun 'dif-elev-cotas-nivel '(y) (list '+ (list '* (list '- 'y elevref) 'vfact) valref))
        )
        (princ "\nError, datos inconsistentes")
     )
  )
  (set-ref)
  (if dif-elev-cotas-nivel
     (while (progn (initget "Cota-ref Opciones")
                   (setq entrada (getpoint "\nIndica punto o <Cota-ref/Opciones>"))
            )
        (cond ((listp entrada)
               (setq cota (dif-elev-cotas-nivel (cadr entrada)))
               (if (last datos)
                  (command "_insert"
                           "ROMANS"
                           entrada
                           htxt
                           htxt
                           0
                           (strcat (car datos)
                                   (if (equal cota 0 0.0000001)
                                      "="
                                      (if (> cota 0)
                                         "+"
                                         ""
                                      )
                                   )
                                   (rtos cota 2 (nth 5 datos))
                                   (cadr datos)
                           )
                  )
               )
              )
              ((= entrada "Cota-ref") (set-ref))
              ((= entrada "Opciones") (opt))
        )
     )
     (princ "\nNo se encontró un valor valido para la elevacion de referencia")
  )
  (setvar "dimzin" dzr)
  (vl-file-delete nf)
  (princ)
)
(prompt "\nTeclea COTA para llamar al comando")
;;;oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo

cyberfantasma

Mensajes : 8
Fecha de inscripción : 22/06/2016

Ver perfil de usuario

Volver arriba Ir abajo

Re: Ayuda con esta rutina

Mensaje por SpeedCAD el Miér Feb 15, 2017 4:46 pm

Hola,

Y cuando vuelves a ejecutar el comando te muestra algun mensaje de error en la linea de comandos de AutoCAD?.

SpeedCAD

Mensajes : 7
Fecha de inscripción : 15/02/2017

Ver perfil de usuario

Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


 
Permisos de este foro:
No puedes responder a temas en este foro.