Saber si un objeto esta en un bloque.

Ir abajo

Saber si un objeto esta en un bloque.

Mensaje por carlosmgilp el Lun Oct 01, 2018 5:42 pm

Hola muchachos, como están.

Tengo una duda, para ver si me pueden dar una mano con esto.

Necesito saber si un objeto esta dentro o fuera de un bloque.
Actualmente estoy sacando las propiedades con esto.
(dumpAllProperties (car (entsel)) 1)
Y si necesito algo especifico lo utilizo de la siguiente manera.
(getpropertyvalue (car (entsel)) "LocalizedName")

Hay la posibilidad de saber con estas funciones que estoy utilizando, si un objeto esta dentro de un bloque o por fuera del bloque.
Es que cuando estoy editando un bloque con refedit y necesito seleccionar todos los puntos que están dentro del bloque para borrarlos, trabaja bien, pero de igualmanera si hay puntos que están fuera del bloque, estos también se borran y así no me sirve.

De antemano, muchas gracias.

carlosmgilp

Mensajes : 149
Fecha de inscripción : 17/03/2016
Edad : 36
Localización : Venezuela

Ver perfil de usuario

Volver arriba Ir abajo

Re: Saber si un objeto esta en un bloque.

Mensaje por Admin el Sáb Oct 06, 2018 2:25 am

Como siempre , mas que siempre , y mucho mas

Sube el ejemplo.dwg y el ejemplo.LSP

Admin
Admin

Mensajes : 194
Fecha de inscripción : 16/03/2016
Edad : 70
Localización : CORDOBA ARGENTINA

Ver perfil de usuario http://acadhispano.foroargentina.net

Volver arriba Ir abajo

Re: Saber si un objeto esta en un bloque.

Mensaje por carlosmgilp el Lun Oct 08, 2018 3:03 pm

Buen día hermano, como has estado.

No tengo un ejemplo dwg porque no es cuestión de representar en un archivo, por eso la pregunta de que si con la función dumpAllProperties se puede saber si un objeto esta dentro de un bloque o no lo esta.

Gracias.

carlosmgilp

Mensajes : 149
Fecha de inscripción : 17/03/2016
Edad : 36
Localización : Venezuela

Ver perfil de usuario

Volver arriba Ir abajo

borrado por no corresponder

Mensaje por Admin el Lun Oct 08, 2018 6:13 pm

borrado por no corresponder

Admin
Admin

Mensajes : 194
Fecha de inscripción : 16/03/2016
Edad : 70
Localización : CORDOBA ARGENTINA

Ver perfil de usuario http://acadhispano.foroargentina.net

Volver arriba Ir abajo

Re: Saber si un objeto esta en un bloque.

Mensaje por Marco Jacinto el Sáb Oct 13, 2018 12:05 am

Checa mediante activeX el ownerID, despues convierte este objectID a un objetovla y despues checa si es un Layout, sino lo es, el objeto seleccionado al principio pertenece a un bloque, en cualquier otro caso es un objeto en modelspace, o los layouts

Marco Jacinto

Mensajes : 53
Fecha de inscripción : 12/08/2016

Ver perfil de usuario

Volver arriba Ir abajo

Re: Saber si un objeto esta en un bloque.

Mensaje por saulo2016 el Lun Oct 15, 2018 5:08 pm

Hola carlosmgilp aqui dejo este codigo con su respectivo DCL para ver si es lo que necesitas.


Código:
//dcl_settings : default_dcl_settings { audit_level = 3; }
main : dialog {
  label = "            Muestra el Block seleccionado";
       : list_box {
 label = "Todos los Blocks en este Dibujo.....";
 key = "combo_1";
 edit_width = 32;
       }
        : spacer {}
        : row {
         fixed_width = true;
         alignment = centered;
         : button {
         label = "Show ...";
         fixed_width = true;
         alignment = centered;
         key = "but1";
         is_default = true;
         }
         : spacer { width = 1.5;}
         : button {
         label = "Salir";
         fixed_width = true;
         alignment = centered;
         key = "but2";
         }
         : spacer { width = 1.5;}
         : button {
         label = "Acerca de ...";
         fixed_width = true;
         alignment = centered;
         key = "but3";
         }
        }
        :spacer {}
        : text {
        label = "";
        key = "wbcs";
        alignment = centered;
        }
//ok_cancel;
}
 
about : dialog {
       label = "                        * * * * * * * * * *    SELECCION DE BLOCK    * * * * * * * * * * * *";
       : text {
  label = "........................................................................";
  key = "atxt1";
  alignment = centered;
 }
 : text {
  label = "";
  key = "atxt2";
  alignment = centered;
 }
 : text {
  label = "";
  key = "atxt3";
  alignment = centered;
 }
 : text {
  label = "";
  key = "atxt4";
  alignment = centered;
 }
 : text {
  label = "";
  key = "atxt5";
  alignment = centered;
 }
 : spacer {}
 : button {
 key = "but4";
 fixed_width = true;
 label = "OK";
 alignment = centered;
 is_default = true;
       }
       : spacer {}
       : text {
       label = "..";
       key = "awbcs";
       alignment = centered;
       }
}//end about dialog

pressme : dialog {
       label = "Para Regresar al Dibujo";
       : spacer {}
       : button {
 key = "but5";
 fixed_width = true;
 label = "Presione Aqui...";
 alignment = centered;
 is_default = true;
       }
}

Código:
(defun temperr (msg)(setq *error* olderr)(princ (strcat "\nError : "msg))(terpri))
(defun c:blockhi (/ blk_lst ctr1 ctr2 dcl_id ent1 ent2 ent3 len lstitem oldcmd olderr regen_do ss1 ss2 tile_test)
(setq olderr *error*)(setq *error* temperr)(setq oldcmd (getvar "cmdecho"))
(setvar "cmdecho"0)(setq dcl_id (load_dialog "blockhi.dcl"))(setq regen_do 1)(setq blk_lst (ai_table "block"14))
(defun about ()(setq about_text1 ".........................................................................")
(setq about_text2 "                                                 ")
(setq about_text3 "Esta es una rutina Autolisp")
(setq about_text4 "                                                   ")
(setq about_text5 "......................................................")
(if (not (new_dialog "about"dcl_id))(exit))(set_tile "atxt1"about_text1)(set_tile "atxt2"about_text2)
(set_tile "atxt3"about_text3)(set_tile "atxt4"about_text4)(set_tile "atxt5"about_text5)
(set_tile "awbcs""***********************************")(action_tile "but4""(done_dialog)")
(start_dialog)(princ))(defun pressed_list ()(setq lstitem $value)(mode_tile "but1"0)(princ))
(defun press_me ()(if (not (new_dialog "pressme"dcl_id))(exit))(action_tile "but5""(done_dialog)")(start_dialog)
(command "regen")(princ))(defun show_me ()(setq ent1 (nth (atoi lstitem)blk_lst))
(progn (progn (setq ss1 (ssget "x"))(setq ctr1 0)(repeat (sslength ss1)(setq ent2 (ssname ss1 ctr1))
(redraw ent2 2)(setq ctr1 (+ 1 ctr1))))(setq ss2 (ssget "X"(list (cons 2 ent1))))
(progn (if (/= ss2 nil)(progn (setq ctr2 0)(repeat (sslength ss2)(setq ent3 (ssname ss2 ctr2))
(redraw ent3 1)(setq ctr2 (+ 1 ctr2))))(progn (alert "No hay ningun Block con ese nombre en este Dibujo ! ... Probablemente ya fue borrado")
(command "regen")(setq regen_do 0)))))(princ))
(if (not (new_dialog "main"dcl_id))(exit))(set_tile "wbcs""_______________________________")
(mode_tile "but1"1)(start_list "combo_1")(mapcar 'add_list blk_lst)(end_list)(action_tile "combo_1""(pressed_list)")
(action_tile "but1""(done_dialog 1)")(action_tile "but2""(done_dialog 2)")(action_tile "but3""(about)")
(setq whatnext (start_dialog))(if (= whatnext 1)(progn (show_me)(if (= regen_do 1)(press_me))))
(if (= whatnext 2)(progn (princ "\nSalir de Blockhi.Lsp")))
(unload_dialog dcl_id)(setq *error* olderr)(setvar "cmdecho"oldcmd)(princ))


Saludos
avatar
saulo2016

Mensajes : 153
Fecha de inscripción : 17/03/2016
Edad : 52
Localización : Monterrey, Nuevo León, Mexico

Ver perfil de usuario

Volver arriba Ir abajo

Re: Saber si un objeto esta en un bloque.

Mensaje por carlosmgilp el Vie Nov 02, 2018 4:55 am

Hola muchachos como están.
Gracias por la información y disculpa el tiempo en responder.

carlosmgilp

Mensajes : 149
Fecha de inscripción : 17/03/2016
Edad : 36
Localización : Venezuela

Ver perfil de usuario

Volver arriba Ir abajo

Re: Saber si un objeto esta en un bloque.

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Volver arriba

- Temas similares

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