Реклама i
Стань нашим партнером - зарабатывай с нами!
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Как создать анонимный блок?

Как создать анонимный блок?

Ответ
Поиск в этой теме
Непрочитано 26.03.2008, 18:47 #1
Как создать анонимный блок?
Shoorup
 
Минск
Регистрация: 16.09.2006
Сообщений: 1,587

Не ругайте и не бейте я честно искал 20 минут по форуму но так конкретного ответа как создать не нашел.
Мне нужно создать анонимный блок, т.е блок который не взорвать простым способом. И посоветуйте как сделать так чтобы обыкновенный пользователь не смог его удалить с чертежа? Блок должен быть не удаляемый, не выделяемый, не редактируемый, но видимый.
__________________
Поезд который устал от ржавого здравомыслия рельсов...
Просмотров: 10165
 
Непрочитано 26.03.2008, 19:29
#2
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Анонимный блок можно взорвать обычным способом, нельзя взорвать МН-блок, и то если квалификация пользователя ниже среднего или интернет отключен.
Цитата:
И посоветуйте как сделать так чтобы обыкновенный пользователь не смог его удалить с чертежа?
Нереально.
В остальном читай здесь
http://www.caduser.ru/cgi-bin/f1/boa...29287el&page=1

*** Добавлено ***
И еще пост #3
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 26.03.2008 в 19:36.
VVA вне форума  
 
Автор темы   Непрочитано 26.03.2008, 20:46
#3
Shoorup


 
Регистрация: 16.09.2006
Минск
Сообщений: 1,587
<phrase 1= Отправить сообщение для Shoorup с помощью Skype™


Мне не нужно защищать весь файл. Нужно только создать в чертеже 1 или несколько одинаковых блоков которые нельзя будет удалить.
Защита от удаления должна быть расчитана на пользователей без инета и с уровнем ниже среднего.
__________________
Поезд который устал от ржавого здравомыслия рельсов...
Shoorup вне форума  
 
Непрочитано 27.03.2008, 06:58
#4
asys

архитектор
 
Регистрация: 10.08.2005
Ростов-на-Дону
Сообщений: 5,283


ну так скопируй в новый файл чвой блок, обработай, и потом вставь его в свой чертеж
asys вне форума  
 
Автор темы   Непрочитано 27.03.2008, 09:00
#5
Shoorup


 
Регистрация: 16.09.2006
Минск
Сообщений: 1,587
<phrase 1= Отправить сообщение для Shoorup с помощью Skype™


??? Ничего не понятно. "Прикрути тот шпиндель вон к тому шпунделю"
__________________
Поезд который устал от ржавого здравомыслия рельсов...
Shoorup вне форума  
 
Непрочитано 27.03.2008, 09:22
#6
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


А если #4 изложить так:
Копируешь содержимое своего будущего анонимного блока в новый чертеж, обрабатываешь выше приведенной программой esconvert и возвращаешь назад ввиде анонимного МН-Блока?
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 27.03.2008, 10:03
#7
Shoorup


 
Регистрация: 16.09.2006
Минск
Сообщений: 1,587
<phrase 1= Отправить сообщение для Shoorup с помощью Skype™


Спасибо. Блок создал. Теперь нужно сделать так чтобы этот блок не удалялся хотябы неопытными пользователями. Может попробовать создать слой неудаляемый с этим блоком. Что посоветуете?
__________________
Поезд который устал от ржавого здравомыслия рельсов...
Shoorup вне форума  
 
Непрочитано 27.03.2008, 12:18
#8
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Попробуй разместить блок на слое defpoints и отключить слой 0
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 27.03.2008, 14:13
#9
Shoorup


 
Регистрация: 16.09.2006
Минск
Сообщений: 1,587
<phrase 1= Отправить сообщение для Shoorup с помощью Skype™


И что получится? В слое 0 работаем - отключать нельзя. defpoints не спасет. Уже башка болит думать что сделать...
Возможно я не правильно поставил задачу заранее...
А задача такая: В своих чертежах я вставляю МН-блок - из себя он представляет точку обыкновенную. В чертежах ставлю эту точку в разных местах. Потом в автозагрузку пользователям ставлю программу которая при нахождении описания данного блока определяет что чертеж принадлежит мне и выполняет код. Если не находит - значит ничего не делает. Может есть и другие способы "пометить" чертеж и его части для таких целей... Ничего другого в голову не пришло
__________________
Поезд который устал от ржавого здравомыслия рельсов...
Shoorup вне форума  
 
Непрочитано 27.03.2008, 14:33
#10
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Цитата:
И что получится?
Получится, что примитивы будет видно, но нельза выбрать
Цитата:
В слое 0 работаем - отключать нельзя
Не правильно.
Цитата:
Может есть и другие способы "пометить" чертеж
Например закрепить свой словарь за объектом ModelSpace
Код:
[Выделить все]
(vl-load-com)
;;Помечает чертеж
(defun Shoorup_makr ( )
(vlax-ldata-put (vla-get-ModelSpace(vla-get-activedocument (vlax-get-acad-object)))
                  "Shoorup"
                  "Shoorup is the great partizan"
                  )
 
  (princ)
  )
;;Возвращает T если есть словать в модели
(defun Shoorup_get_mark ( / ret )
(and  
(setq ret (vlax-ldata-get (vla-get-ModelSpace(vla-get-activedocument (vlax-get-acad-object)))
                  "Shoorup"
                )
      )
(= ret "Shoorup is the great partizan")
  )
)
(defun C:Shoorup_Mark ()(Shoorup_makr))
(defun C:Shoorup_Check()(alert (if (Shoorup_get_mark) "Мой" "НЕ МОЙ"))(princ))
(defun C:Shoorup_DEL ()
  (vlax-ldata-delete (vla-get-ModelSpace(vla-get-activedocument (vlax-get-acad-object)))
                  "Shoorup"
                  )
  )
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 27.03.2008 в 16:24. Причина: Добавлена команда удаления
VVA вне форума  
 
Непрочитано 27.03.2008, 14:36
#11
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


А потом прописывать реактор на команду удаления?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 27.03.2008, 15:55
#12
Shoorup


 
Регистрация: 16.09.2006
Минск
Сообщений: 1,587
<phrase 1= Отправить сообщение для Shoorup с помощью Skype™


VVA, Это что-то потрясающее! Особенно нравится в коде
Цитата:
"Shoorup is the great partizan"

Осталось на всякий пожарный научиться удалять его.
__________________
Поезд который устал от ржавого здравомыслия рельсов...
Shoorup вне форума  
 
Непрочитано 27.03.2008, 16:25
#13
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


На всякий пожарный изменил код в #10
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 27.03.2008, 16:29
#14
Shoorup


 
Регистрация: 16.09.2006
Минск
Сообщений: 1,587
<phrase 1= Отправить сообщение для Shoorup с помощью Skype™


Но цель всеравно не достигнута. Дело в том, что в чертеже должны быть именованные объекты, которые могут копироваться вместе с примитивами. По этим объектам и будет определяться чертеж. А приведенный выше код не совсем подходит потому как из ситуации можно выйти элементарно вставив в другой чертеж все объекты. А словарь останеться в старом чертеже. Сделаю и блоками и словарем - у нас пользователи не настолько умные чтобы полностью избавиться от всего. Так что вполне сойдет
__________________
Поезд который устал от ржавого здравомыслия рельсов...
Shoorup вне форума  
 
Непрочитано 27.03.2008, 16:44
#15
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


В описание блока засовывай ldata - тогда перенос / копирование блока автоматом скопирует и Copyright
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 27.03.2008, 19:05
#16
asys

архитектор
 
Регистрация: 10.08.2005
Ростов-на-Дону
Сообщений: 5,283


как только задача будет решена, расскажи, поделись пожалуйста. Я чувствую пахнет какой-то интересной защитой от дурака я тоже хочу поюзать
asys вне форума  
 
Непрочитано 16.11.2012, 10:41
#17
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
В описание блока засовывай ldata - тогда перенос / копирование блока автоматом скопирует и Copyright
Цитата:
Сообщение от asys Посмотреть сообщение
как только задача будет решена, расскажи, поделись пожалуйста.
Наткнулся на эту тему. Набросал в первом приближении для затравки
Код:
[Выделить все]
(vl-load-com)
(setq *COPYRIGHT_TEXT* "(C) Vasya Pupkin") ;_Идентификационный текст
(setq *COPYRIGHT_DICT* "My_mark")          ;_Имя словаря
(defun My_mark ( obj )
  (if (vlax-write-enabled-p obj)
    (vlax-ldata-put
     (if (wcmatch (vla-get-ObjectName obj)"AcDb*Block")
       (vla-item (vla-get-Blocks(vla-get-activedocument (vlax-get-acad-object)))(vla-get-EffectiveName obj))
       obj
       )
     *COPYRIGHT_DICT*
     (list
       (list "(c)" *COPYRIGHT_TEXT*)
       (list "name" *COPYRIGHT_DICT*)
       (list "date" (rtos(getvar "cdate") 2 6))
       (list "compname" (getenv "COMPUTERNAME"))
       (list "usr" (getenv "USERNAME"))
       )
     )
    (alert "Object on locked layer")
    )
  )
(defun my_get_mark ( obj / ret )
(and  
(setq ret
   (vlax-ldata-get
     (if (wcmatch (vla-get-ObjectName obj)"AcDb*Block")
       (vla-item (vla-get-Blocks(vla-get-activedocument (vlax-get-acad-object)))(vla-get-EffectiveName obj))
       obj
       )
     *COPYRIGHT_DICT*
     )
      )
)
ret
)

(defun C:MYMark ( / ss i )
  (and (setq ss (ssget "_:L"))
       (progn
       (repeat (setq i (sslength ss))
         (My_mark (vlax-ename->vla-object (ssname ss (setq i (1- i)))))
       )
       (princ "\nMark ")
       (princ (sslength ss))
       (princ " objects")
       )
       )
  (princ)
  )
(defun C:MYDELMark ( / ss i obj)
  (and (setq ss (ssget "_:L"))
       (progn
       (repeat (setq i (sslength ss))
         (setq obj (vlax-ename->vla-object(ssname ss (setq i (1- i)))))
         (vlax-ldata-delete 
         (if (wcmatch (vla-get-ObjectName obj)"AcDb*Block")
           (vla-item (vla-get-Blocks(vla-get-activedocument (vlax-get-acad-object)))(vla-get-EffectiveName obj))
           obj
           )
       *COPYRIGHT_DICT*
         )
       )
       T
       )
       (princ "\nMark del from ")
       (princ (sslength ss))
       (princ " objects")
       )
       )
  (princ)
)
(defun C:MYGETMarkFull ( / ss i )
  (and (setq ss (ssget "_:S:E"))
       (alert
           (if (assoc "(c)"(setq i (my_get_mark (vlax-ename->vla-object (ssname ss 0)))))
             (strcat "My Object\n"
                    "(c) - " (cadr(assoc "(c)" i)) "\n"
                    "name - " (cadr(assoc "name" i)) "\n"
                    "date - " (cadr(assoc "date" i)) "\n"
                    "compname - " (cadr(assoc "compname" i)) "\n"
                    "usr - " (cadr(assoc "usr" i)) "\n"
                     )
             "Nothing"
             )
           )
       )
  (princ)
)
(princ "\nType in command line:\n")
(princ "\nMyMark - mark objects")
(princ "\nMyDelMark - del mark info from objects")
(princ "\nMYGETMark - get mark info")
(princ "\nMYGETMarkFull - get mark full info")
Под себя можно поменять имя словаря *COPYRIGHT_DICT*
Для проверки на других компьютерах можно создать проект fas или vlx
В vlx словари можно помещать в отдельное именное пространство
LISP.Как вызвать функцию документа из отдельного именного пространства VLX-модуля.
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 16.11.2012, 12:37
#18
asys

архитектор
 
Регистрация: 10.08.2005
Ростов-на-Дону
Сообщений: 5,283


спасибо, посмотрим
asys вне форума  
 
Непрочитано 18.06.2014, 14:11
#19
sergeev_2005

Проектирование гражданских зданий
 
Регистрация: 25.03.2010
Санкт-Петербург
Сообщений: 90


Хочется вернуться к созданию МН-блоков. Выяснилось, что программу esconvert.lsp очень удобно использовать вместо внедрения ссылок.
В этом случае не надо чистить файлы ссылок и нет необходимости удалять выгруженные ссылки. (У нас фирме разрабатывают файлы одни люди, а готовят к отправке заказчикам и строителям другие).
Однако выяснилось, что если в самом файле и в ссылках присутствуют одинаковые слои, то они объединяются без префикса ссылки и принимают свойства слоя основного файла.
То есть типа внедрения по способу "вставить".
А хотелось бы, чтобы слои были индивидуальными (типа способа внедрения "внедрить".
Сам я Лисп не тяну.
Может быть кто-нибудь сможет помочь, подкорректировав файл esconvert.lsp, чтобы в МН-блоке слои были с префиксами ссылочных файлов? (Насколько я понял, авторы разрешают изменение программы).
Был бы очень благодарен.
Особая надежда на VVA.
Чтобы не искать программу, прилагаю её.
Вложения
Тип файла: lsp esconvert.lsp (10.3 Кб, 86 просмотров)
sergeev_2005 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Как создать анонимный блок?

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как создать библиотеку слайдов ivspec Программирование 23 16.04.2013 23:21
Как в Акад 2006 программно создать подшивку с заданным набор kp+ Программирование 4 16.03.2009 23:23
Как создать блок не командными методами Дима_ Программирование 9 20.03.2008 12:31
Как создать тему? Artiznov Разное 7 24.10.2007 18:04
Как создать объект XLINE? Таня. Программирование 8 26.09.2007 12:03