Выбор узловых выносок СПДС (SpdsNoteKnot) по образцу текущей выделенной.
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Выбор узловых выносок СПДС (SpdsNoteKnot) по образцу текущей выделенной.

Выбор узловых выносок СПДС (SpdsNoteKnot) по образцу текущей выделенной.

Ответ
Поиск в этой теме
Непрочитано 25.11.2008, 13:07 #1
Выбор узловых выносок СПДС (SpdsNoteKnot) по образцу текущей выделенной.
Baldares
 
Саратов
Регистрация: 17.10.2008
Сообщений: 426

Привет.

Вот эта задачка может стать для меня основой для освоения Лиспа.
Потомучто на VBA до dxf кодов добираться все равно через него. А еще и гемор по пути схватишь.

Прошу накидать пример. Пожалуйста. А я еге изучу )))

Цель. Выделить выноски по образцу выдбранной.

Я представляю себе такие действия:
1. Получить верхнюю стороку текущей выбранной выноски. Т.е. предпологается что перед стартом команды - выделена выноска (по которой и нужно будет выделить все выноски на чертеже в model_space, с таким же текстом).
2. Перебрать модель и занести в набор все выноски с таким же текстом.
3. Подсветить набор.

Вот что у меня есть пока. - Был бред, удалил.

Готовый лисп см. #51

Последний раз редактировалось Baldares, 27.11.2008 в 14:37.
Просмотров: 19503
 
Автор темы   Непрочитано 25.11.2008, 13:10
#2
Baldares


 
Регистрация: 17.10.2008
Саратов
Сообщений: 426


В ObjectName = "mcsDbObjectNotePosition", тоже не уверен!
Baldares вне форума  
 
Автор темы   Непрочитано 25.11.2008, 13:17
#3
Baldares


 
Регистрация: 17.10.2008
Саратов
Сообщений: 426


Первые ощущения от редактора - неудобно.
Табом строчка улетает далеко, 8 символов
; для примечания ставить не удобно. Апостроф как то проще в VBA.
ИнтелеСенс (не помню точного названия) - нет. Тобишь контесктного подстановщика переменных, команд и т.д.

Ну может привыкнуть нуна.
Baldares вне форума  
 
Автор темы   Непрочитано 25.11.2008, 13:18
#4
Baldares


 
Регистрация: 17.10.2008
Саратов
Сообщений: 426


Вот данные по объекту выноски.
Код:
[Выделить все]
Команда: (ENTGET(CAR(ENTSEL)))
Выберите объект: ((-1 . <Имя объекта: 7ed61088>) (0 . "spdsNoteKnot") (330 . 
<Имя объекта: 7eff2cf8>) (5 . "1A9C7D9") (100 . "AcDbEntity") (67 . 0) (410 . 
"Model") (8 . "Монт.узлы-новые") (6 . "Continuous") (48 . 1.5) (100 . 
"mcsDbObject") (100 . "mcsDbObjectNoteKnot") (90 . 1) (301 . "Name") (300 . 
"13") (301 . "Info") (300 . "Узловая выноска\r\n13") (301 . "Scale") (40 . 
75.0) (301 . "CutAcElements") (290 . 1) (301 . "Text style") (300 . "SPDS") 
(301 . "Горизонтальный радиус") (40 . 247.499) (301 . "Вертикальный радиус") 
(40 . 492.79) (301 . "Номер узла") (300 . "13") (301 . "Номер листа") (300 . 
"") (301 . "Адрес узла") (300 . "") (301 . "Выравнивание текста") (300 . "По 
центру") (301 . "Направление полки") (40 . 0.0) (301 . "Высота текста") (40 . 
3.5) (301 . "Высота малого текста") (40 . 2.5) (301 . "Шаг угла") (40 . 15.0) 
(301 . "Окружность") (290 . 1))
Т.е. нас ) интересует (300 . "13"). Хотя их несколько ( 300-сотых пар. Как нужную выцепить?

Имя объекта = "mcsDbObjectNoteKnot".

Последний раз редактировалось Baldares, 25.11.2008 в 13:24.
Baldares вне форума  
 
Непрочитано 25.11.2008, 13:32
#5
DEM

YngIngKllr
 
Регистрация: 29.03.2005
СПб
Сообщений: 12,968


Baldares
Слушай ты там тоько поосторожнее с программной обработкой объектов СПДС, а то Я баловался как то с изменением объектов через dxf.
На начальном этапе все ОК, а потом стабильное Фатлаити для автокада.
Правда вот не помню толи для объектов СПДС то ли для объектов PS-конструкции
__________________
Работаю за еду.
Working for food.
Für Essen arbeiten.
العمل من أجل الغذاء
Працую за їжу.
DEM вне форума  
 
Непрочитано 25.11.2008, 13:45
#6
Кулик Алексей aka kpblc
Moderator

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


Baldares, поищи тему что-то типа "СПДС выноски спецификация". Там был разбор выносок.
Автор темы, насколько я помню - Red Nova
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 25.11.2008, 13:46
#7
Baldares


 
Регистрация: 17.10.2008
Саратов
Сообщений: 426


DEM, мне кажется эти праблы у тебя из-за того что одновременно загружены SPDS и PS. Токма версия.
Baldares вне форума  
 
Автор темы   Непрочитано 25.11.2008, 13:47
#8
Baldares


 
Регистрация: 17.10.2008
Саратов
Сообщений: 426


Кулик Алексей aka kpblc, это я первым делом сделал. И этот примерчик начальный отдуда и выцепил, твой кстати ).
Ну щас еще покумекаю там-сям.
Baldares вне форума  
 
Непрочитано 25.11.2008, 14:01
#9
DEM

YngIngKllr
 
Регистрация: 29.03.2005
СПб
Сообщений: 12,968


Цитата:
Сообщение от Baldares Посмотреть сообщение
DEM, мне кажется эти праблы у тебя из-за того что одновременно загружены SPDS и PS. Токма версия.
НЕЕЕЕ
Имменно при изменении объектов через DXF происходи вылет автокада.
А так СПДС-ка с PS у меня постоянно загружены.
__________________
Работаю за еду.
Working for food.
Für Essen arbeiten.
العمل من أجل الغذاء
Працую за їжу.
DEM вне форума  
 
Непрочитано 25.11.2008, 14:10
#10
Кулик Алексей aka kpblc
Moderator

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


Baldares, ну раз нашел, то ты понимаешь, что надо сначала формировать набор объектов, потом проходить по нему, исключая "не выноски" и "не соответствующие критериям отбора". Другого пути лично мне неизвестно.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 25.11.2008, 14:49
#11
Baldares


 
Регистрация: 17.10.2008
Саратов
Сообщений: 426


Где посмотреть переменные, объекты?
Допустим нужен текущий набор, PickFirst-Selection. Должно быть наверно что-то типа vla-pickfirst-selection.

И еще. При отборе из модели всех выносок, есть ли смысл сначало сформировать набор по типу объектов (0 . "spdsNoteKnot") через ssget.
В VBA это бы быстрее, чем сразу перебирать все пространство модели.
Baldares вне форума  
 
Автор темы   Непрочитано 25.11.2008, 14:59
#12
Baldares


 
Регистрация: 17.10.2008
Саратов
Сообщений: 426


А вот подгрузил (vl-load-com), вижу все переменные vla.

А аргументы для функций только в справке можно смотреть, в редакторе никак?
Baldares вне форума  
 
Автор темы   Непрочитано 25.11.2008, 15:16
#13
Baldares


 
Регистрация: 17.10.2008
Саратов
Сообщений: 426


Тяжеловато.
Примерчик бы.
В теме Red Nova, все коды без коментов (..
Baldares вне форума  
 
Непрочитано 25.11.2008, 15:50
#14
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, տ.գ.թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,990
Отправить сообщение для Red Nova с помощью Skype™


Baldares, Попробуй команду _spqs и "сделается тебе хорошо".
__________________
Блог
Red Nova вне форума  
 
Автор темы   Непрочитано 25.11.2008, 16:10
#15
Baldares


 
Регистрация: 17.10.2008
Саратов
Сообщений: 426


Red Nova, Спасибо конешно.
Но опять облом с Лиспом )
Baldares вне форума  
 
Автор темы   Непрочитано 25.11.2008, 16:46
#16
Baldares


 
Регистрация: 17.10.2008
Саратов
Сообщений: 426


А нет. Можно усложнить задачу.

Вообще мне нужно вставлять блок узла в каждую выноску.
Блок узла называется "Узел", и состоит из двух атрибутов - марки (имени узла), и обозначения (шифр альбома). Определение блока в файле есть.
Где шифр альбома берется из базы.

Еще есть доп. сложность. В тексте выноски, кроме имени узла могут быть доп символы - "по", и "(з.)". Например: "по 13", или "13 (з.)". Т.е. нужно эти штуки отфильтровывать.

Вот. Полностью эту задачу решить на лиспе у меня кишка тонка.
В VBA было бы просто.
Но загвоздка какраз в определении текста выноски. Т.е. через dxf коды.
В лиспе то для этого есть entget, на сколько я знаю.

Можно в VBA получить текст выноски?
Это наверно уже вопрос для новой темы, или поиска готового решения.
Пока можете здесь ответить.)
Baldares вне форума  
 
Непрочитано 25.11.2008, 18:28
#17
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, տ.գ.թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,990
Отправить сообщение для Red Nova с помощью Skype™


Цитата:
Можно в VBA получить текст выноски?
Чтобы получить текст выноски (а точнее для преобразования выносок СПДС в список) используй лисп от крыса, он тут
__________________
Блог
Red Nova вне форума  
 
Автор темы   Непрочитано 25.11.2008, 20:10
#18
Baldares


 
Регистрация: 17.10.2008
Саратов
Сообщений: 426


А наборы в SelectionSets, в vba и Лиспе совпадают?
Допустим в vba создам набор "123", я туда пихну объект выноски. В лиспе можно получить этот набор по имени, и объект выноски, через ActiveX? Правда я пока не знаю как в лиспе получить набор по имени.
Чето я сомневаюсь в такой возможности.
Наверно нужно передавать ObjectID, через допустим переменную User.

Последний раз редактировалось Baldares, 25.11.2008 в 20:32.
Baldares вне форума  
 
Автор темы   Непрочитано 25.11.2008, 22:18
#19
Baldares


 
Регистрация: 17.10.2008
Саратов
Сообщений: 426


Вот набросал.
Код:
[Выделить все]
(defun set-SpdsNoteKnotName-to-Users1 ( / )
	(setq acdoc (vla-get-ActiveDocument (vlax-get-acad-object)))
	(setq selSets (vla-get-SelectionSets acdoc))
	; получаем набор, созданный в VBA
	(setq selSpdsNode (vla-item selSets "Выноска"))
	; получаем объект выноски. (в наборе только один объект)
	(setq objSpdsNode (vla-item selSpdsNode 0))
	;переводим объект в примитив
	(setq objSpdsNode (vlax-vla-object->ename objSpdsNode))
	;получаем список точечных пар
	(setq lstDXF (entget objSpdsNode))
	; получаем значение 300 кода
	(setq SpdsNodeName (cdr (assoc 300 lstDXF)))
	; записываем значение в сис.переменную
	(command "_users1" SpdsNodeName "")
)
Ну как смок.
Смысл такой. В VBA создаю набор "Выноска", добавляю в него объект выноски.
Потом в VBA нужно запустить эту функцию для получения имени этой выноски. Вот.
Через что возвращать полученное именя выноски обратно в VBA? Через переменную User, нормально. Или как она точно называется Userr1-Userr5.

Последний раз редактировалось Baldares, 25.11.2008 в 23:20.
Baldares вне форума  
 
Автор темы   Непрочитано 25.11.2008, 22:21
#20
Baldares


 
Регистрация: 17.10.2008
Саратов
Сообщений: 426


удалил. Дубль.
Baldares вне форума  
 
Автор темы   Непрочитано 25.11.2008, 22:35
#21
Baldares


 
Регистрация: 17.10.2008
Саратов
Сообщений: 426


Справочник команд AutoCAD 2008 > Системные переменные > Системные переменные U >
USERS1-5

Цитата:
Обеспечивает хранение и извлечение данных текстовых строк. Существует пять системных переменных: USERS1, USERS2, USERS3, USERS4 и USERS5.
Baldares вне форума  
 
Непрочитано 25.11.2008, 23:12
#22
Кулик Алексей aka kpblc
Moderator

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


USERS* - для хранения строковых значений
USERR* - то же, чисел с двойной точностью
USERI* - то же, целых чисел.
Код (как вариант, на лиспе):
Код:
[Выделить все]
(defun spds-node-select-like (lst             /
                              fun_conv-selset-to-ename        fun_get-node
                              fun_get-sheet   fun_get-scale   fun_get-adress
                              obj             obj_layer       obj_node
                              obj_sheet       obj_adress      obj_scale
                              selset          ent             obj_lst
                              res
                              )
                             ;|
*    Выбор "такой же" узловой выноски СПДС GraphiCS по списку критериев.
*    Параметры вызова:
	lst	список вида
	 '("layer"	; наличие слова указывает, что надо учитывать объекты,
	 		; лежащие на таком же слое
	   "node"	; то же, по номеру узла (в терминологии СПДС)
	   "sheet"	; то же, номеру листа
	   "adress"	; то же, адрес
	   "scale"	; фильтровать по масштабу объекта
	   )
*    Формируется набор только по пространству, в котором лежит "определяющий" объект
*    Примеры вызова:
(spds-node-select-like nil)	; выбрать вообще все.
(spds-node-select-like '("layer")) ; выбрать выноски, лежащие на том же
				; слое, что и "родитель"
(spds-node-select-like '("node"))
(spds-node-select-like '("node" "layer"))
|;

  (defun fun_conv-selset-to-ename (selset / tab item)
    (cond
      ((not selset) nil)
      ((= (type selset) 'pickset)
       (repeat (setq tab  nil
                     item (sslength selset)
                     ) ;_ end setq
         (setq tab (cons (ssname selset (setq item (1- item))) tab))
         ) ;_ end repeat
       )
      ((listp selset) selset)
      ) ;_ end of cond
    ) ;_ end of defun

  (defun fun_get-node (ent_lst)
    (cdr (assoc 300 (member '(301 . "Номер узла") ent_lst)))
    ) ;_ end of defun

  (defun fun_get-sheet (ent_lst)
    (cdr (assoc 300 (member '(301 . "Номер листа") ent_lst)))
    ) ;_ end of defun

  (defun fun_get-adress (ent_lst)
    (cdr (assoc 300 (member '(301 . "Адрес узла") ent_lst)))
    ) ;_ end of defun

  (defun fun_get-scale (ent_lst)
    (cdr (assoc 40 (member '(301 . "Scale") ent_lst)))
    ) ;_ end of defun

  (vl-load-com)
  (setq lst (mapcar (function strcase) lst))
  (if (and (= (type (setq obj (vl-catch-all-apply
                                (function
                                  (lambda ()
                                    (ssget "_:E:S")
                                    ) ;_ end of lambda
                                  ) ;_ end of function
                                ) ;_ end of vl-catch-all-apply
                          ) ;_ end of setq
                    ) ;_ end of type
              'pickset
              ) ;_ end of =
           (setq obj (ssname obj 0))
           (= (cdr (assoc 0 (entget obj))) "spdsNoteKnot")
           (setq selset (ssget "_X" (list (assoc 410 (entget obj)))))
           ) ;_ end of and
    (progn
      (setq obj_lst    (entget obj)
            obj_layer  (if (member "LAYER" lst)
                         (cdr (assoc 8 obj_lst))
                         ) ;_ end of if
            obj_node   (if (member "NODE" lst)
                         (cdr (assoc 300 (member '(301 . "Номер узла") obj_lst)))
                         ) ;_ end of if
            obj_sheet  (if (member "SHEET" lst)
                         (cdr (assoc 300 (member '(301 . "Номер листа") obj_lst)))
                         ) ;_ end of if
            obj_adress (if (member "ADRESS" lst)
                         (cdr (assoc 300 (member '(301 . "Адрес узла") obj_lst)))
                         ) ;_ end of if
            obj_scale  (if (member "SCALE" lst)
                         (cdr (assoc 40 (member '(301 . "Scale") obj_lst)))
                         ) ;_ end of if
            obj_lst    (vl-remove-if-not
                         (function
                           (lambda (x / _lst)
                             (setq _lst (entget x))
                             (and (if obj_layer
                                    (= (cdr (assoc 8 _lst)) obj_layer)
                                    t
                                    ) ;_ end of if
                                  (if obj_node
                                    (= (fun_get-node _lst) obj_node)
                                    t
                                    ) ;_ end of if
                                  (if obj_sheet
                                    (= (fun_get-sheet _lst) obj_sheet)
                                    t
                                    ) ;_ end of if
                                  (if obj_adress
                                    (= (fun_get-adress _lst) obj_adress)
                                    t
                                    ) ;_ end of if
                                  (if obj_scale
                                    (= (fun_get-scale _lst) obj_scale)
                                    t
                                    ) ;_ end of if
                                  ) ;_ end of and
                             ) ;_ end of lambda
                           ) ;_ end of function
                         (fun_conv-selset-to-ename selset)
                         ) ;_ end of vl-remove-if-not
            res        (ssadd)
            ) ;_ end of setq
      (foreach item obj_lst
        (setq res (ssadd item res))
        ) ;_ end of foreach
      (sssetfirst res res)
      res
      ) ;_ end of progn
    ) ;_ end of if
  ) ;_ end of defun
---
Добавлено: чуток фантазии и можно добавить практически все что угодно )
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 25.11.2008, 23:21
#23
Baldares


 
Регистрация: 17.10.2008
Саратов
Сообщений: 426


Вау. Алексей благодарствую. Ща буду разбиратся.
Baldares вне форума  
 
Автор темы   Непрочитано 25.11.2008, 23:27
#24
Baldares


 
Регистрация: 17.10.2008
Саратов
Сообщений: 426


Офигенско пашет!
Baldares вне форума  
 
Непрочитано 25.11.2008, 23:46
#25
Кулик Алексей aka kpblc
Moderator

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


Offtop: Это радует
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 26.11.2008, 00:03
#26
Baldares


 
Регистрация: 17.10.2008
Саратов
Сообщений: 426


Ну Алексей нахимичил.
Расскажи что это:
Код:
[Выделить все]
(setq obj (vl-catch-all-apply
                                (function
                                  (lambda ()
                                    (ssget "_:E:S")
                                    ) ;_ end of lambda
                                  ) ;_ end of function
                                ) ;_ end of vl-catch-all-apply
                          )
(ssget "_:E:S") - ето понятно.
(vl-catch-all-apply (function (lambda () ... - не очень. Типа обработка ошибки, при выборе. Но функция lambda без аргумента. Что происходит?
Код:
[Выделить все]
(type (setq obj (vl-catch-all-apply
                                (function
                                  (lambda ()
                                    (ssget "_:E:S")
                                    ) ;_ end of lambda
                                  ) ;_ end of function
                                ) ;_ end of vl-catch-all-apply
                          ) ;_ end of setq
                    ) ;_ end of type
              'pickset
Зачем набор проверять на = pickset ?

Код:
[Выделить все]
obj_lst    (vl-remove-if-not
                         (function
                           (lambda (x / _lst)
Что похожее на предыдущее. Тож не очень понятно.

Код:
[Выделить все]
(sssetfirst res res)
      res
С этой подсветкой какаие-то непонятки. Зачем ей два набора?
И что делает отдельностоящий res?

Можешь смальца пояснить, плиз.
Baldares вне форума  
 
Автор темы   Непрочитано 26.11.2008, 00:11
#27
Baldares


 
Регистрация: 17.10.2008
Саратов
Сообщений: 426


Код:
[Выделить все]
(defun fun_conv-selset-to-ename (selset / tab item)
    (cond
      ((not selset) nil)
      ((= (type selset) 'pickset)
       (repeat (setq tab  nil
                     item (sslength selset)
                     ) ;_ end setq
         (setq tab (cons (ssname selset (setq item (1- item))) tab))
         ) ;_ end repeat
       )
      ((listp selset) selset)
      ) ;_ end of cond
    ) ;_ end of defun
???
Чето слабо соображаю уже.
Надо отложить разбор на завтра.
Baldares вне форума  
 
Автор темы   Непрочитано 26.11.2008, 09:20
#28
Baldares


 
Регистрация: 17.10.2008
Саратов
Сообщений: 426


Вот интересно. В справке написаны эквиваленты функций лиспа и vba.
Для entget - AutoCAD.Application.ActiveDocument.collection_object.property properties
И что это значит.
Baldares вне форума  
 
Непрочитано 26.11.2008, 09:46
#29
Кулик Алексей aka kpblc
Moderator

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


Чего-чего?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 26.11.2008, 10:10
#30
Baldares


 
Регистрация: 17.10.2008
Саратов
Сообщений: 426


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Чего-чего?
ты про #28
А как это понимать.
Вот в этом разделе справки:
ActiveX and VBA Developer's Guide > Visual LISP and ActiveX/VBA Comparison >
Baldares вне форума  
 
Автор темы   Непрочитано 26.11.2008, 10:11
#31
Baldares


 
Регистрация: 17.10.2008
Саратов
Сообщений: 426


Как определить точку вставки выноски?
Baldares вне форума  
 
Непрочитано 26.11.2008, 10:16
#32
Кулик Алексей aka kpblc
Moderator

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


Сейчас убегаю. Вернусь - попробую рассказать #26 И дальше....
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 26.11.2008, 11:54
#33
Baldares


 
Регистрация: 17.10.2008
Саратов
Сообщений: 426


У тебя при (spds-node-select-like nil) - выбираются все объекты чертежа.
Добавил строчку:
Код:
[Выделить все]
obj_lst    (vl-remove-if-not
                         (function
                           (lambda (x / _lst)
                             (setq _lst (entget x))
                             (and (= (cdr (assoc 0 _lst)) "spdsNoteKnot")
И еще, сам не знаю как изменить.
Долго обрабатывает весь чертеж, около 5-10 секунд.
Потому что у нас в моделе всего порядка 12000 примитивов, из них порядка 2000 узловых выносок. У меня просто-то вся модель выбирается долго.
Так вот, как бы сразу исключить из набора блоки, и .т.д(см рис.), или прям сразу отфильтровать выноски.
Вот тут:
Код:
[Выделить все]
(setq selset (ssget "_X" (list (assoc 410 (entget obj)))))
А?
Миниатюры
Нажмите на изображение для увеличения
Название: Примитивы.jpg
Просмотров: 79
Размер:	44.3 Кб
ID:	12690  
Baldares вне форума  
 
Непрочитано 26.11.2008, 12:00
#34
Кулик Алексей aka kpblc
Moderator

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


Ненадолго (до первого высказывания после меня) подниму тему.
По поводу #26:
  1. vl-catch-all-apply используется для предотвращения "вылета" программы, если пользователь вдруг нажмет Esc на запрос объекта
    Сюда же и
    Цитата:
    Зачем набор проверять на = pickset ?
    Если не будет выбрано ничего, то obj будет nil. А если нажат Esc, то <%catch-error%> (ну или что-то типа того)
  2. Цитата:
    Код:
    [Выделить все]
    obj_lst    (vl-remove-if-not
                             (function
                               (lambda (x / _lst)
    Что похожее на предыдущее. Тож не очень понятно.
    Из сформированного набора удаляются объекты, не удовлетворяющие указанным условиям.
  3. Цитата:
    Зачем ей два набора?
    Посмотри справку по sssetfirst.
  4. Цитата:
    И что делает отдельностоящий res?
    При успешном выполнении функция возвращает сформированный набор. Если этого не надо - удаляй. В конце функции можешь поставить (princ) для "тихого" выхода.
  5. Цитата:
    Как определить точку вставки выноски?
    По-моему, в lisp-представлении объекта выноски этого нет
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 26.11.2008, 12:16
#35
Baldares


 
Регистрация: 17.10.2008
Саратов
Сообщений: 426


Этот значек достал уже.
Как от него избавиться?
Типа автокад чтоль занят. Вроде нет.
Изображения
 
Baldares вне форума  
 
Непрочитано 26.11.2008, 12:17
#36
Кулик Алексей aka kpblc
Moderator

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


К №33:
1. Да, я как-то упустил фильтрацию по 0 группе. Звиняй.
2. "Прям сразу" отфильтровать выноски не удастся. Как вариант (втупую) - замени строку с назначением selset:
Код:
[Выделить все]
(setq
  selset (ssget
           "_X"
           (list
             (assoc 410 (entget obj))
             (cons -4 "<NOT")
             (cons 0
                   "*LINE,*TEXT,*INSERT,CIRCLE,ARC,ELLI*,DIM*,*IM?G*,AEC_*"
                   ) ;_ end of cons
             (cons -4 "NOT>")
             ) ;_ end of list
           ) ;_ end of ssget
  ) ;_ end of setq
Четко понимаю, что это по идее должно делаться одной строкой, но мозгов на сообразить что-то не хватает
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 26.11.2008, 13:03
#37
Baldares


 
Регистрация: 17.10.2008
Саратов
Сообщений: 426


Теперь все ваще нормуль.

Но вот тут я так и не понял
Код:
[Выделить все]
obj_lst    (vl-remove-if-not
                         (function
                           (lambda (x / _lst)
                             (setq _lst (entget x))
                             (and (= (cdr (assoc 0 _lst)) "spdsNoteKnot")
										 	 (if obj_layer
                                    (= (cdr (assoc 8 _lst)) obj_layer)
                                    t
                                    ) ;_ end of if
                                  (if obj_node
                                    (= (fun_get-node _lst) obj_node)
                                    t
                                    ) ;_ end of if
                                  (if obj_sheet
                                    (= (fun_get-sheet _lst) obj_sheet)
                                    t
                                    ) ;_ end of if
                                  (if obj_adress
                                    (= (fun_get-adress _lst) obj_adress)
                                    t
                                    ) ;_ end of if
                                  (if obj_scale
                                    (= (fun_get-scale _lst) obj_scale)
                                    t
                                    ) ;_ end of if
                                  ) ;_ end of and
                             ) ;_ end of lambda
                           ) ;_ end of function
                         (fun_conv-selset-to-ename selset)
                         ) ;_ end of vl-remove-if-not
Смысл понятен, в obj_lst заносим объекты выносок удовлетворяющих условиям.
Но куда формируется набор объектов во время выполнения function? Ведь по ходу перебора объектов из (fun_conv-selset-to-ename selset), obj_lst остается не изменным. И только после окончания function туда заносится ее результат.
Ведь перед (function (lambda ()... - должен стоять apply или mapcar!? Получается что и (vl-remove-if-not может стоять

Насчет (sssetfirst gripset[pickset]).
Первый аргумент не нужен вроде - nill.
Baldares вне форума  
 
Непрочитано 26.11.2008, 13:12
#38
Кулик Алексей aka kpblc
Moderator

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


Сейчас acad у меня занят (собака, файл обрабатывает уже больше 20 минут), поэтому пишу "насухую":
что означает (vl-remove-if Бла-бла-бла: из списка obj_lst удалить объекты, если в результате выполнения lamdba вернется t.
Ну, например:
(vl-remove-if (function (lamdba (x) (member x '(1 2 3)))) '(10 20 30 1 20 30 2 30 3))
Можешь поставить точку остановки на слове member и последовательно проверять значения х.
--
sssetfirst: первый набор - выделить ручками. Второй - подсветить пунктиром. Или наоборот, уже не помню.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 26.11.2008, 13:51
#39
Baldares


 
Регистрация: 17.10.2008
Саратов
Сообщений: 426


подвох, lambda=lambda )))
Понятно. Тока жалко не видно пошагового формирования итогового списка, возвращаемого после выполнения (vl-remove-if (function (lamdba (x) (member x '(1 2 3)))) '(10 20 30 1 20 30 2 30 3)).

Цитата:
Как определить точку вставки выноски?

По-моему, в lisp-представлении объекта выноски этого нет
Прям никак никак. Ну очень надо.
Baldares вне форума  
 
Автор темы   Непрочитано 26.11.2008, 14:03
#40
Baldares


 
Регистрация: 17.10.2008
Саратов
Сообщений: 426


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Код (как вариант, на лиспе):
Код:
[Выделить все]
(defun spds-node-select-like (lst             /
                              fun_conv-selset-to-ename        fun_get-node
                              fun_get-sheet   fun_get-scale   fun_get-adress
                              obj             obj_layer       obj_node
                              obj_sheet       obj_adress      obj_scale
                              selset          ent             obj_lst
                              res
                              )
                             ;|
*    Выбор "такой же" узловой выноски СПДС GraphiCS по списку критериев.
*    Параметры вызова:
	lst	список вида
	 '("layer"	; наличие слова указывает, что надо учитывать объекты,
	 		; лежащие на таком же слое
	   "node"	; то же, по номеру узла (в терминологии СПДС)
	   "sheet"	; то же, номеру листа
	   "adress"	; то же, адрес
	   "scale"	; фильтровать по масштабу объекта
	   )
*    Формируется набор только по пространству, в котором лежит "определяющий" объект
*    Примеры вызова:
(spds-node-select-like nil)	; выбрать вообще все.
(spds-node-select-like '("layer")) ; выбрать выноски, лежащие на том же
				; слое, что и "родитель"
(spds-node-select-like '("node"))
(spds-node-select-like '("node" "layer"))
|;

  (defun fun_conv-selset-to-ename (selset / tab item)
    (cond
      ((not selset) nil)
      ((= (type selset) 'pickset)
       (repeat (setq tab  nil
                     item (sslength selset)
                     ) ;_ end setq
         (setq tab (cons (ssname selset (setq item (1- item))) tab))
         ) ;_ end repeat
       )
      ((listp selset) selset)
      ) ;_ end of cond
    ) ;_ end of defun

  (defun fun_get-node (ent_lst)
    (cdr (assoc 300 (member '(301 . "Номер узла") ent_lst)))
    ) ;_ end of defun

  (defun fun_get-sheet (ent_lst)
    (cdr (assoc 300 (member '(301 . "Номер листа") ent_lst)))
    ) ;_ end of defun

  (defun fun_get-adress (ent_lst)
    (cdr (assoc 300 (member '(301 . "Адрес узла") ent_lst)))
    ) ;_ end of defun

  (defun fun_get-scale (ent_lst)
    (cdr (assoc 40 (member '(301 . "Scale") ent_lst)))
    ) ;_ end of defun

  (vl-load-com)
  (setq lst (mapcar (function strcase) lst))
  (if (and (= (type (setq obj (vl-catch-all-apply
                                (function
                                  (lambda ()
                                    (ssget "_:E:S")
                                    ) ;_ end of lambda
                                  ) ;_ end of function
                                ) ;_ end of vl-catch-all-apply
                          ) ;_ end of setq
                    ) ;_ end of type
              'pickset
              ) ;_ end of =
           (setq obj (ssname obj 0))
           (= (cdr (assoc 0 (entget obj))) "spdsNoteKnot")
           (setq selset (ssget "_X" (list (assoc 410 (entget obj)))))
           ) ;_ end of and
    (progn
      (setq obj_lst    (entget obj)
            obj_layer  (if (member "LAYER" lst)
                         (cdr (assoc 8 obj_lst))
                         ) ;_ end of if
            obj_node   (if (member "NODE" lst)
                         (cdr (assoc 300 (member '(301 . "Номер узла") obj_lst)))
                         ) ;_ end of if
            obj_sheet  (if (member "SHEET" lst)
                         (cdr (assoc 300 (member '(301 . "Номер листа") obj_lst)))
                         ) ;_ end of if
            obj_adress (if (member "ADRESS" lst)
                         (cdr (assoc 300 (member '(301 . "Адрес узла") obj_lst)))
                         ) ;_ end of if
            obj_scale  (if (member "SCALE" lst)
                         (cdr (assoc 40 (member '(301 . "Scale") obj_lst)))
                         ) ;_ end of if
            obj_lst    (vl-remove-if-not
                         (function
                           (lambda (x / _lst)
                             (setq _lst (entget x))
                             (and (if obj_layer
                                    (= (cdr (assoc 8 _lst)) obj_layer)
                                    t
                                    ) ;_ end of if
                                  (if obj_node
                                    (= (fun_get-node _lst) obj_node)
                                    t
                                    ) ;_ end of if
                                  (if obj_sheet
                                    (= (fun_get-sheet _lst) obj_sheet)
                                    t
                                    ) ;_ end of if
                                  (if obj_adress
                                    (= (fun_get-adress _lst) obj_adress)
                                    t
                                    ) ;_ end of if
                                  (if obj_scale
                                    (= (fun_get-scale _lst) obj_scale)
                                    t
                                    ) ;_ end of if
                                  ) ;_ end of and
                             ) ;_ end of lambda
                           ) ;_ end of function
                         (fun_conv-selset-to-ename selset)
                         ) ;_ end of vl-remove-if-not
            res        (ssadd)
            ) ;_ end of setq
      (foreach item obj_lst
        (setq res (ssadd item res))
        ) ;_ end of foreach
      (sssetfirst res res)
      res
      ) ;_ end of progn
    ) ;_ end of if
  ) ;_ end of defun
---
Добавлено: чуток фантазии и можно добавить практически все что угодно )
Чет у меня фигово с фантазией. А что тут нужно еще добавлять?
Единствено, я эту функцию вызываю из vbaшной формы (как бы это противно не звучало), на которой стоят галки для параметров выбора.

Помоему удобней чем spqs, для заданных параметров. Там их конечно больше (все), но выбирать долго.

зы еще бы суметь определять точки вставки выносок.(
Baldares вне форума  
 
Непрочитано 26.11.2008, 20:41
#41
DEM

YngIngKllr
 
Регистрация: 29.03.2005
СПб
Сообщений: 12,968


Baldares
Как раз этим Я изанимался, пытался определть то чку вставки выноски и потом менять в ней текст, поменять текст получаетлось нормально, а вот определить точку вствки ну ни как.
Кстати вспомнил с какими арх объектами у меня получался вылет автокада, при ихменении свойств через dxf, это были арматурные стержни PS-конструкции
__________________
Работаю за еду.
Working for food.
Für Essen arbeiten.
العمل من أجل الغذاء
Працую за їжу.
DEM вне форума  
 
Автор темы   Непрочитано 27.11.2008, 10:33
#42
Baldares


 
Регистрация: 17.10.2008
Саратов
Сообщений: 426


Ой косяк.

В vba Формирую список выносок на чертеже. Объект выноски определяю по ObjectName = "mcsDbObjectNoteKnot", а имя выноски определяю через лисповскую функцию. В цикле по перебору объектов модели, каждую выноску заношу в набор "Выноска" и для нее в лиспе определяю имя и заношу в Users1.
Вчерась работало нормально.
Сегодня такая ерунда при выполнении:
Код:
[Выделить все]
Команда: (set-spdsNoteKnotName-to-Users1)
_users1
Новое значение USERS1, или . если нет <"16">: 16
Команда: -VBARUN
Имя макроса: nil

Имя макроса:
>>Имя макроса:
Имя макроса:
>>Имя макроса:
Имя макроса:
>>Имя макроса:
Имя макроса:
>>Имя макроса:
Имя макроса:
Это при выполнении макроса!
Какое еще имя макроса он запрашивает и с чего?

Вот сама функция:
определение имени выноски из набора "Выноска", и запись его в Users1.
Код:
[Выделить все]
(defun set-spdsNoteKnotName-to-Users1 ( / selSets selSpdsNode objSpdsNode SpdsNodeName)
  	(vl-load-com)
	(setq selSets (vla-get-SelectionSets (vla-get-ActiveDocument (vlax-get-acad-object))))
	; получаем набор, созданный в VBA
	(setq selSpdsNode (vla-item selSets "Выноска"))
	; получаем объект выноски. (в наборе только один объект)
	(setq objSpdsNode (vla-item selSpdsNode 0))
	;переводим объект в примитив
	(setq objSpdsNode (vlax-vla-object->ename objSpdsNode))
	; получаем значение 300 кода
	(setq SpdsNodeName (cdr (assoc 300 (member '(301 . "Номер узла") (entget objSpdsNode)))))
	; записываем значение в сис.переменную
	(command "_users1" SpdsNodeName "")
)
Чую я дров наломал.
Baldares вне форума  
 
Автор темы   Непрочитано 27.11.2008, 10:37
#43
Baldares


 
Регистрация: 17.10.2008
Саратов
Сообщений: 426


Вот примерно такой макрос.
Код:
[Выделить все]
For Each objEnt In ThisDrawing.ModelSpace 
 If objEnt.ObjectName = "mcsDbObjectNoteKnot" Then
   Set objEnt(0) = objEnt
   selSetNode.AddItems varEnt
   ThisDrawing.SendCommand "(set-spdsNoteKnotName-to-Users1)" & vbCr
 End If
Next
Baldares вне форума  
 
Автор темы   Непрочитано 27.11.2008, 11:20
#44
Baldares


 
Регистрация: 17.10.2008
Саратов
Сообщений: 426


Кажется здесь загвоздка:
Код:
[Выделить все]
(command "_users1" SpdsNodeName "")
Тут что-то не так?
Baldares вне форума  
 
Автор темы   Непрочитано 27.11.2008, 11:25
#45
Baldares


 
Регистрация: 17.10.2008
Саратов
Сообщений: 426


Если так то все пучком.
Код:
[Выделить все]
(command "_users1" SpdsNodeName)
Baldares вне форума  
 
Автор темы   Непрочитано 27.11.2008, 11:31
#46
Baldares


 
Регистрация: 17.10.2008
Саратов
Сообщений: 426


Теперь как бы скрыть требуху из командной строки.
CMDECHO 0 поставить?
Но где? В vba перед вызовом SendComand, или в лиспе.

Цитата:
Справочник команд AutoCAD 2008 > Системные переменные > Системные переменные С > CMDECHO >
CMDECHO

Тип: Целый
Сохранен в: Не сохранен
Начальное значение: 1

Управляет дублированием подсказок и ввода при выполнении команды AutoLISP.

0 - Выключение повтора

1 - Включение повтора
И еще, на всякий пожарный. Ведь нормальной работе в акакде CMDECHO=0, не особо мешает. Или нет.
Просто в случае "чп" она может остаться в 0.
Baldares вне форума  
 
Автор темы   Непрочитано 27.11.2008, 12:00
#47
Baldares


 
Регистрация: 17.10.2008
Саратов
Сообщений: 426


А чтоб и команды не писались в ком.строке, есть сис.переменная?
Baldares вне форума  
 
Непрочитано 27.11.2008, 12:05
#48
Кулик Алексей aka kpblc
Moderator

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


Для случая "ЧП" надо переопределять обработчик ошибок. В лиспе это решается одними методами, в VBA - другими (см. On Error)
№43: А зачем ты для каждого объекта вызываешь лисп? По-моему, все можно решить значительно проще: в форме ты показываешь критерии отбора, например, а потом запускаешь уже лисп для показа набора.
И, кстати, установить системную переменную можно и без SendCommand
VBA: ThisDrawing.SetVariable
LISP: setvar
В конце лиспа ставь (princ) и будет тебе "тихий" выход.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 27.11.2008, 12:37
#49
Baldares


 
Регистрация: 17.10.2008
Саратов
Сообщений: 426


Кулик Алексей aka kpblc, я отошел в сторону от начальной темы, с ней вопрос решен твоим лиспом. Теперь решаю новую задачу. Но тему не стал создовать. А ты не отвлекаешься от темы не при каких условиях).
Похоже нужно все-таки создать тему.

Короч. Она близка к этой.
"Выделение узловых выносок из списка имен всех выносок на чертеже." Вот.
В vba формирую массив по типу имя выноски и к нему коллекция самих примитивов. И так для каждого имени выноски.
Имя выноски определяю в лиспе.
Потом чел выбрал нужное имя выноски в списке и нажал "Выделить"
Ну я и передаю набор примитивов для этого имени выноски в лисп, где и подсвечиваю его.
Но уже тоже решилась, остались мелкие нюансы. Которые и спрашиваю.

На счет подавления команд в ком.строке.
При вызове лисп функции:
Код:
[Выделить все]
ThisDrawing.SendCommand "(set-spdsNoteKnotName-to-Users1)" & vbCr
В ком.строке остается строка вида:
Код:
[Выделить все]
Команда: (set-spdsNoteKnotName-to-Users1)
Вот ее бы убрать.
Baldares вне форума  
 
Непрочитано 27.11.2008, 13:09
#50
Кулик Алексей aka kpblc
Moderator

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


cmdecho, nomutt, menuecho - меняй и потом обратно не забудь вернуть
Кстати, я вынужден вообще за всеми темами следить. Должность такая
---
Добавлено: поищи на форуме vlax.cls - он, насколько я помню, позволяет передавать данные VBA <-> Lisp напрямую. Может, его использование решит твою проблему.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 27.11.2008, 14:35
#51
Baldares


 
Регистрация: 17.10.2008
Саратов
Сообщений: 426


Для результата темы.

Лисп от Кулик Алексей aka kpblc, из #22, жирным отмечены изменения.
Код:
[Выделить все]
(defun spds-node-select-like (lst             /
                              fun_conv-selset-to-ename        fun_get-node
                              fun_get-sheet   fun_get-scale   fun_get-adress
                              obj             obj_layer       obj_node
                              obj_sheet       obj_adress      obj_scale
                              selset          ent             obj_lst
                              res
                              )
                             ;|
*    Выбор "такой же" узловой выноски СПДС GraphiCS по списку критериев.
*    Параметры вызова:
	lst	список вида
	 '("layer"	; наличие слова указывает, что надо учитывать объекты,
	 		; лежащие на таком же слое
	   "node"	; то же, по номеру узла (в терминологии СПДС)
	   "sheet"	; то же, номеру листа
	   "adress"	; то же, адрес
	   "scale"	; фильтровать по масштабу объекта
	   )
*    Формируется набор только по пространству, в котором лежит "определяющий" объект
*    Примеры вызова:
(spds-node-select-like nil)	; выбрать вообще все.
(spds-node-select-like '("layer")) ; выбрать выноски, лежащие на том же
				; слое, что и "родитель"
(spds-node-select-like '("node"))
(spds-node-select-like '("node" "layer"))
|;

  (defun fun_conv-selset-to-ename (selset / tab item)
    (cond
      ((not selset) nil)
      ((= (type selset) 'pickset)
       (repeat (setq tab  nil
                     item (sslength selset)
                     ) ;_ end setq
         (setq tab (cons (ssname selset (setq item (1- item))) tab))
         ) ;_ end repeat
       )
      ((listp selset) selset)
      ) ;_ end of cond
    ) ;_ end of defun

  (defun fun_get-node (ent_lst)
    (cdr (assoc 300 (member '(301 . "Номер узла") ent_lst)))
    ) ;_ end of defun

  (defun fun_get-sheet (ent_lst)
    (cdr (assoc 300 (member '(301 . "Номер листа") ent_lst)))
    ) ;_ end of defun

  (defun fun_get-adress (ent_lst)
    (cdr (assoc 300 (member '(301 . "Адрес узла") ent_lst)))
    ) ;_ end of defun

  (defun fun_get-scale (ent_lst)
    (cdr (assoc 40 (member '(301 . "Scale") ent_lst)))
    ) ;_ end of defun
  
(vl-load-com)
  (setq lst (mapcar (function strcase) lst))
  (if (and (= (type (setq obj (vl-catch-all-apply
                                (function
                                  (lambda ()
                                    (ssget "_:E:S")
                                    ) ;_ end of lambda
                                  ) ;_ end of function
                                ) ;_ end of vl-catch-all-apply
                          ) ;_ end of setq
                    ) ;_ end of type
              'pickset
              ) ;_ end of =
           (setq obj (ssname obj 0))
           (= (cdr (assoc 0 (entget obj))) "spdsNoteKnot")
			  (setq selset (ssget "_X" (list (assoc 410 (entget obj))
												(cons -4 "<NOT")
             								(cons 0 "*LINE,*TEXT,*INSERT,CIRCLE,ARC,ELLI*,DIM*,*IM?G*,AEC_*,HATCH")
             								(cons -4 "NOT>")
             								) ;_ end of list
           					) ;_ end of ssget
  				) ;_ end of set
      ) ;_ end of and
    (progn
      (setq obj_lst    (entget obj)
            obj_layer  (if (member "LAYER" lst)
                         (cdr (assoc 8 obj_lst))
                         ) ;_ end of if
            obj_node   (if (member "NODE" lst)
                         (cdr (assoc 300 (member '(301 . "Номер узла") obj_lst)))
                         ) ;_ end of if
            obj_sheet  (if (member "SHEET" lst)
                         (cdr (assoc 300 (member '(301 . "Номер листа") obj_lst)))
                         ) ;_ end of if
            obj_adress (if (member "ADRESS" lst)
                         (cdr (assoc 300 (member '(301 . "Адрес узла") obj_lst)))
                         ) ;_ end of if
            obj_scale  (if (member "SCALE" lst)
                         (cdr (assoc 40 (member '(301 . "Scale") obj_lst)))
                         ) ;_ end of if
            obj_lst    (vl-remove-if-not
                         (function
                           (lambda (x / _lst)
                             (setq _lst (entget x))
                             (and (= (cdr (assoc 0 _lst)) "spdsNoteKnot")
										 	 (if obj_layer
                                    (= (cdr (assoc 8 _lst)) obj_layer)
                                    t
                                    ) ;_ end of if
                                  (if obj_node
                                    (= (fun_get-node _lst) obj_node)
                                    t
                                    ) ;_ end of if
                                  (if obj_sheet
                                    (= (fun_get-sheet _lst) obj_sheet)
                                    t
                                    ) ;_ end of if
                                  (if obj_adress
                                    (= (fun_get-adress _lst) obj_adress)
                                    t
                                    ) ;_ end of if
                                  (if obj_scale
                                    (= (fun_get-scale _lst) obj_scale)
                                    t
                                    ) ;_ end of if
                                  ) ;_ end of and
                             ) ;_ end of lambda
                           ) ;_ end of function
                         (fun_conv-selset-to-ename selset)
                         ) ;_ end of vl-remove-if-not
            res        (ssadd)
            ) ;_ end of setq
      (foreach item obj_lst
        (setq res (ssadd item res))
        ) ;_ end of foreach
      (sssetfirst res res)
      res
      ) ;_ end of progn
    ) ;_ end of if
  ) ;_ end of defun
Цитата:
Добавлено: чуток фантазии и можно добавить практически все что угодно )
Baldares вне форума  
 
Непрочитано 29.11.2008, 13:01
#52
DEM

YngIngKllr
 
Регистрация: 29.03.2005
СПб
Сообщений: 12,968


Вопросик немного не по теме
С помощью вот этого лиспика можно изменять текст в маркере
Код:
[Выделить все]
(defun C:примитив (/ SL1 SL2)
(setq SL1 (entsel "Выберете объект:  "))
(setq SL2 (entget (car SL1)))
(princ)
(setq SL1 (cadr (member '(301 . "1pos") SL2)))
(setq SL2 (subst '(300 . "thtyj") SL1 SL2))
(entmod SL2)
)
Попытка с помощью него же изменить точку вставки маркера не увенчалась, вот пробный код
Код:
[Выделить все]
(defun C:примитив (/ SL1 SL2)
(setq SL1 (entsel "Выберете объект:  "))
(setq SL2 (entget (car SL1)))
(princ)
(setq SL1 (cadr (member '(301 . "Origin point X:") SL2)))
(setq SL2 (subst '(40 . 0.0) SL1 SL2))
(entmod SL2)
)
Хотя функция возвращает измененные значения

Может еще есть какой нибудь вариант измнения точки вставки маркера.
__________________
Работаю за еду.
Working for food.
Für Essen arbeiten.
العمل من أجل الغذاء
Працую за їжу.
DEM вне форума  
 
Автор темы   Непрочитано 29.11.2008, 13:38
#53
Baldares


 
Регистрация: 17.10.2008
Саратов
Сообщений: 426


DEM, а кинь сам маркер для примера. Для 4 СПДС. 5ки нету.
Baldares вне форума  
 
Автор темы   Непрочитано 29.11.2008, 13:57
#54
Baldares


 
Регистрация: 17.10.2008
Саратов
Сообщений: 426


Вот такая штука да.
Код:
[Выделить все]
Выберите объект: ((-1 . <Имя объекта: 7efb4540>) (0 . "mcsDbObject") (330 . 
<Имя объекта: 7efb2cf8>) (5 . "1E0") (100 . "AcDbEntity") (67 . 0) (410 . 
"Model") (8 . "0") (100 . "mcsDbObject") (100 . "mcsDbObject") (90 . 1) (301 . 
"Name") (300 . "Новый маркер") (301 . "Info") (300 . "Новый 
маркер\nПанель\tН5\n") (301 . "Scale") (40 . 1.0) (301 . "MarkerType") (300 . 
"Новый маркер") (301 . "Панель") (300 . "Н5") (301 . "Origin point X:") (40 . 
1578.42) (301 . "Origin point Y:") (40 . 701.169))
Код:
[Выделить все]
; Поддерживаемые методы:
;   ArrayPolar (3)
;   ArrayRectangular (6)
;   Copy ()
;   Delete ()
;   GetBoundingBox (2)
;   GetExtensionDictionary ()
;   GetXData (3)
;   Highlight (1)
;   IntersectWith (2)
;   Mirror (2)
;   Mirror3D (3)
;   Move (2)
;   Rotate (2)
;   Rotate3D (3)
;   ScaleEntity (2)
;   SetXData (2)
;   TransformBy (1)
;   Update ()

Последний раз редактировалось Baldares, 29.11.2008 в 14:04.
Baldares вне форума  
 
Непрочитано 29.11.2008, 15:47
#55
DEM

YngIngKllr
 
Регистрация: 29.03.2005
СПб
Сообщений: 12,968


Baldares
Угу
Я вот и думаю что если уж с программным созданием выносок не получантся, то можно с маркерами по работать.
Учитывая что у аркеров возможностей по более.
__________________
Работаю за еду.
Working for food.
Für Essen arbeiten.
العمل من أجل الغذاء
Працую за їжу.
DEM вне форума  
 
Автор темы   Непрочитано 29.11.2008, 16:03
#56
Baldares


 
Регистрация: 17.10.2008
Саратов
Сообщений: 426


DEM, скинь файл в котором позициипроставлены с пом. этих маркеров. Для 4-ки если есть. Не пойму как с их помощью позиции простовлять. У мну получился маркер в виде линии и над ним имя маркера. Но такой для позиций не пойдет. Скинь шоб не париться.
А демка для пятки есть у них. Щас поищу.
Baldares вне форума  
 
Непрочитано 29.11.2008, 16:17
#57
DEM

YngIngKllr
 
Регистрация: 29.03.2005
СПб
Сообщений: 12,968


Да ты создай свой маркер в СПДС 4.0 там все просто.
Вот с ним и побалуйся.
А 5,0 вроде уже поправили на следующей неделе переставлю.
__________________
Работаю за еду.
Working for food.
Für Essen arbeiten.
العمل من أجل الغذاء
Працую за їжу.
DEM вне форума  
 
Автор темы   Непрочитано 29.11.2008, 16:47
#58
Baldares


 
Регистрация: 17.10.2008
Саратов
Сообщений: 426


Просто-да не просто. Жадина-говядина
Baldares вне форума  
 
Непрочитано 29.11.2008, 16:49
#59
DEM

YngIngKllr
 
Регистрация: 29.03.2005
СПб
Сообщений: 12,968


Baldares
Дык 4-ку снес не заново её ставить же.
__________________
Работаю за еду.
Working for food.
Für Essen arbeiten.
العمل من أجل الغذاء
Працую за їжу.
DEM вне форума  
 
Автор темы   Непрочитано 29.11.2008, 18:46
#60
Baldares


 
Регистрация: 17.10.2008
Саратов
Сообщений: 426


Поставил пятку. Ни одного отличия не нашел от 4-ки. Бред.
DEM, через мове попробуй.
Код:
[Выделить все]
(vl-load-com)
(defun C:marker-move-to0 (/ entMark lstMark objMark ptX ptY 3DptO 3DptXY)
(setq entMark (car (entsel "Выберете маркер:")))
(setq lstMark (entget entMark))
(setq objMark (vlax-ename->vla-object entMark))
(setq ptX (cdadr (member '(301 . "Origin point X:") lstMark)))
(setq ptY (cdadr (member '(301 . "Origin point Y:") lstMark)))
(setq 3DptXY (vlax-3d-point ptX ptY 0))
(setq 3DptO (vlax-3d-point 0 0 0))
(vla-Move objMark 3DptXY 3DptO)
)
Это так набросок. Я не шарю в лиспе. Могу косяков наплодить.
Baldares вне форума  
 
Непрочитано 29.11.2008, 18:53
#61
DEM

YngIngKllr
 
Регистрация: 29.03.2005
СПб
Сообщений: 12,968


Baldares
Отлично, получилось теперь можно работать программно с объектами СПДС-ки
А то с выносками у мну не получалось.
__________________
Работаю за еду.
Working for food.
Für Essen arbeiten.
العمل من أجل الغذاء
Працую за їжу.
DEM вне форума  
 
Автор темы   Непрочитано 29.11.2008, 19:00
#62
Baldares


 
Регистрация: 17.10.2008
Саратов
Сообщений: 426


DEM, во-первых нужно чтоб кто-нить посмотрел с высока на эту конструкцию, и доработал.
Во-вторях точка вставки - это точка начала полки. А хотелось бы поймать начало выноски.
Так а чего в пятом СПДС нового, а?
Baldares вне форума  
 
Непрочитано 29.11.2008, 19:06
#63
DEM

YngIngKllr
 
Регистрация: 29.03.2005
СПб
Сообщений: 12,968


Кстати это немного решает твою задачу Baldares
Если работать с новым чертежем можно сделать новый объект аналогичный узловой выноске, и работть уже с ним, а не со стандартным объектом, у нового объекта будет уже точка вствки.
__________________
Работаю за еду.
Working for food.
Für Essen arbeiten.
العمل من أجل الغذاء
Працую за їжу.
DEM вне форума  
 
Автор темы   Непрочитано 29.11.2008, 19:11
#64
Baldares


 
Регистрация: 17.10.2008
Саратов
Сообщений: 426


DEM, у нас уже есть сотни чертежей и вкаждом стоит по 1500 узловых выносок. Мне нужно в каждую выноску вставить блок.
Щас пробую через ObjectARX достать точку у выноски Мож кто поможет?
Baldares вне форума  
 
Непрочитано 29.11.2008, 19:12
#65
DEM

YngIngKllr
 
Регистрация: 29.03.2005
СПб
Сообщений: 12,968


Baldares
Да особенно нового не нашел ни чего.
А вот с точкой вставки ты не прав, смотри, ты же можешь вставлять объект как блок а потом разбивать его, точка вставки будет та которую ты укажешь у блока, а потом можно уже по работать со вставленым объектом и определить точку начала выноски.
А вообще надо попробовать сделать в СПДС свой объект подобный узловой выноске и с ним работать.
__________________
Работаю за еду.
Working for food.
Für Essen arbeiten.
العمل من أجل الغذاء
Працую за їжу.
DEM вне форума  
 
Непрочитано 29.11.2008, 19:18
#66
DEM

YngIngKllr
 
Регистрация: 29.03.2005
СПб
Сообщений: 12,968


Могу тебе предложить следующее
1е сделать дубль чертежа
2е удалить все объекты кроме узловых выносок
3е разбить все узловые выноски
4е определить центры узловых вносок с помощью обработки окружностей, там алгоритм какой нибудь придумать
5е сохранить точуи вставки в список и работь уже с ним, в другом файле с узловыми выносками

В общем какой то такой алгоритм
Раз уж напрямую не получается
Если чаго получится с ARX отпишись
__________________
Работаю за еду.
Working for food.
Für Essen arbeiten.
العمل من أجل الغذاء
Працую за їжу.
DEM вне форума  
 
Автор темы   Непрочитано 29.11.2008, 19:30
#67
Baldares


 
Регистрация: 17.10.2008
Саратов
Сообщений: 426


Цитата:
Сообщение от DEM Посмотреть сообщение
3е разбить все узловые выноски
4е определить центры узловых вносок с помощью обработки окружностей, там алгоритм какой нибудь придумать
О, Щас поковыряюсь.
На кадюзере создал тему в обжектархе, может помогут. Мне самому слабо.
Baldares вне форума  
 
Непрочитано 29.11.2008, 19:32
#68
DEM

YngIngKllr
 
Регистрация: 29.03.2005
СПб
Сообщений: 12,968


Baldares
А х-ли голь на выдумку хитра, нас в двери не пускають так мы через форточку залезем.
__________________
Работаю за еду.
Working for food.
Für Essen arbeiten.
العمل من أجل الغذاء
Працую за їжу.
DEM вне форума  
 
Автор темы   Непрочитано 29.11.2008, 19:46
#69
Baldares


 
Регистрация: 17.10.2008
Саратов
Сообщений: 426


Удалил. Извиняюсь, ерунду сморозил.

Последний раз редактировалось Baldares, 29.11.2008 в 20:12.
Baldares вне форума  
 
Непрочитано 29.11.2008, 20:34
#70
DEM

YngIngKllr
 
Регистрация: 29.03.2005
СПб
Сообщений: 12,968


Baldares
Ты это по осторожнее туть, модераторы знаешь какие злые.
Даже у мну нету индульгенции..
__________________
Работаю за еду.
Working for food.
Für Essen arbeiten.
العمل من أجل الغذاء
Працую за їжу.
DEM вне форума  
 
Автор темы   Непрочитано 29.11.2008, 21:14
#71
Baldares


 
Регистрация: 17.10.2008
Саратов
Сообщений: 426


Дело дрянь.
Самый авторитетный авторитет из всех которых я знаю, сказал НЕЛЬЗЯ! Вот тут и что нужно обращаться к разработчикам СПДС.
На солько я знаю Яков один из них.
DEM, у тебя есть выходы на него?
Или ему можно нагло в личку написать?
Baldares вне форума  
 
Непрочитано 29.11.2008, 21:27
#72
DEM

YngIngKllr
 
Регистрация: 29.03.2005
СПб
Сообщений: 12,968


Baldares
Он ща в Москве(хотя в СКАЙПЕ онлайн, наверное забыл комп на работе выключить), приедеть по спрошаю, но мы с ним когда общались, по этому поводу он сказал, что Лиспом эту особо с объектами СПДС не по работашь. Хотя вот смотрю с маркерами и объектами собственой разработки работать можно.
Попробуй сдедать как я предложил, взорвав объекты СПДС, и по работав с окружностями решить проблему.
Как вариант могу предложить еще следующее, сделать свой объект СПДС а потом когда обработаешь свои узловые выноски поменять их на свои объекты.
В общем пока перед тобой задача номер 1 это обработать окружности и определить центры, если хочешь Я тебе потом могу помочь с с объектом имитируещим узловую выноску.
__________________
Работаю за еду.
Working for food.
Für Essen arbeiten.
العمل من أجل الغذاء
Працую за їжу.
DEM вне форума  
 
Автор темы   Непрочитано 29.11.2008, 21:42
#73
Baldares


 
Регистрация: 17.10.2008
Саратов
Сообщений: 426


DEM, думаю у всех профи глаза на лоб полезут от способа из #66. Буду пока работать над ним.
И напишу писмо в CSoft, авось отозвуться.

Насчет создания нового объекта типа узловой выноски. В реальном применении ее к уже готовым чертежам я сомневаюсь. Говорю, уже все блок-скции отточены, и менять в каждом чертеже по 1500 штуки выноски на новый объект желающих я не найду, а новые чертежы создаются копи-пастом.
Для освоения всех возможностей СПДС, умение создовать собственные объекты не помешало бы. Я пока не умею. Будет возможность покажи. Сам попробую конешно.

Пойду про кризис почитаю.
Baldares вне форума  
 
Непрочитано 29.11.2008, 21:53
#74
DEM

YngIngKllr
 
Регистрация: 29.03.2005
СПб
Сообщений: 12,968


А кстати попробовал разбить узловую выноску, там получается замкнутая полилиния текст и отрезки в итоге, что вообще упрощает работу с данными объектами. Определить центр замкнутой полилинии тебе не составит труда, можешь даже определить наименование выноски, и ассоциировать ее с определенной точкой вставки.
__________________
Работаю за еду.
Working for food.
Für Essen arbeiten.
العمل من أجل الغذاء
Працую за їжу.
DEM вне форума  
 
Автор темы   Непрочитано 29.11.2008, 22:14
#75
Baldares


 
Регистрация: 17.10.2008
Саратов
Сообщений: 426


Цитата:
Сообщение от DEM Посмотреть сообщение
А кстати попробовал разбить узловую выноску, там получается замкнутая полилиния текст и отрезки в итоге, что вообще упрощает работу с данными объектами. Определить центр замкнутой полилинии тебе не составит труда, можешь даже определить наименование выноски, и ассоциировать ее с определенной точкой вставки.
Все так.
Вот только как бы программно разбить все СПДСовские оьъекты.
Код:
[Выделить все]
ThisDrawing.SendCommand "spexplodeall" & vbCr
Выскакивает окошко для подтверждения, блин.
Baldares вне форума  
 
Непрочитано 29.11.2008, 22:18
#76
DEM

YngIngKllr
 
Регистрация: 29.03.2005
СПб
Сообщений: 12,968


Обыкновенным _explode
__________________
Работаю за еду.
Working for food.
Für Essen arbeiten.
العمل من أجل الغذاء
Працую за їжу.
DEM вне форума  
 
Автор темы   Непрочитано 29.11.2008, 22:56
#77
Baldares


 
Регистрация: 17.10.2008
Саратов
Сообщений: 426


не DEM, ты не понял, ПРОГРАММНО. Из лиспа или VBA.
Объект выноски не поддерживает метода Explode.
Baldares вне форума  
 
Непрочитано 29.11.2008, 23:53
#78
Кулик Алексей aka kpblc
Moderator

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


А раз объект не поддерживает, то кроме _.explode ничего и не получится.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 30.11.2008, 00:03
#79
DEM

YngIngKllr
 
Регистрация: 29.03.2005
СПб
Сообщений: 12,968


Погоди ну вот смотри, сдеалй дубль чертежа удали программно все объекты кроме узловых выносок СПДС все объекты.
Создаешь набор типа (ssget "_X" '((0 . "_spdsNoteKnot"))), а потом командно command "_.explode" разбить данный набор.
__________________
Работаю за еду.
Working for food.
Für Essen arbeiten.
العمل من أجل الغذاء
Працую за їжу.
DEM вне форума  
 
Автор темы   Непрочитано 30.11.2008, 00:23
#80
Baldares


 
Регистрация: 17.10.2008
Саратов
Сообщений: 426


Упс, да и правда.
Только выбрать их по (0 . "_spdsNoteKnot") не выйдет, ну это не важно. Или у тея получилсь.
Завтра продолжу.
Baldares вне форума  
 
Непрочитано 30.11.2008, 00:53
#81
DEM

YngIngKllr
 
Регистрация: 29.03.2005
СПб
Сообщений: 12,968


Цитата:
Сообщение от Baldares Посмотреть сообщение
Упс, да и правда.
Только выбрать их по (0 . "_spdsNoteKnot") не выйдет, ну это не важно. Или у тея получилсь.
Завтра продолжу.
Набор получается через
(ssget "_X" '((100 . "mcsDbObject") (301 . "Номер узла") ))
Но дальше не получилось ни фига у меня.
Крыс делал мне подобную прогу, на разбитие объектов СПДС ки
__________________
Работаю за еду.
Working for food.
Für Essen arbeiten.
العمل من أجل الغذاء
Працую за їжу.
DEM вне форума  
 
Непрочитано 30.11.2008, 22:21
#82
Кулик Алексей aka kpblc
Moderator

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


Ну ты вспомнил... Я уж про тот код напрочь забыл...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 30.11.2008, 22:25
#83
DEM

YngIngKllr
 
Регистрация: 29.03.2005
СПб
Сообщений: 12,968


Кулик Алексей aka kpblc
Угу 3 года назад дело было, еще и объекты PS взрывала прога.
У мну просто комп один полетел а таммм куча исходников с лиспами была, вот и найти не смогу уже.
Кстати kpblc ты же тоже как то хотел выноски СПДС ки программно вставлять, вариант с маркерами подойдет????
__________________
Работаю за еду.
Working for food.
Für Essen arbeiten.
العمل من أجل الغذاء
Працую за їжу.
DEM вне форума  
 
Непрочитано 30.11.2008, 22:38
#84
Кулик Алексей aka kpblc
Moderator

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


Ох, DEM, мне сейчас не до создания СПДС-овских объектов.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 30.11.2008, 22:45
#85
Baldares


 
Регистрация: 17.10.2008
Саратов
Сообщений: 426


О, Алексей привет. Ты говорил что качаешь MSV2008, уже установил?
Подскажи как прикрутить ObjectARX к нему. И как там собирать приложения для 2008 када.
У меня есть MSV2008, но из-за ObjectArx'а установил 2005.
И еще, а MSDN на русском ты тоже скачал. Где? Из инета мне неудобно его юзать.
Английский язык меня достал уже.
Еще бы справку по ObjectARX'у на русском достать бы.
Baldares вне форума  
 
Непрочитано 30.11.2008, 23:12
#86
Кулик Алексей aka kpblc
Moderator

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


Для 2008-го acad'a нужна 2005-я студия. Русскую версию студии скачал (да и MSDN тоже), но пока не устанавливал - некогда было. Все выходные практически насмарку
Справки по ObjectARX на русском нет. И, боюсь, в обозримом будущем не предвидится
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 01.12.2008, 00:31
#87
Baldares


 
Регистрация: 17.10.2008
Саратов
Сообщений: 426


А все-таки, как ты собиаешся увязывать Акад с MVS2008? Тоже охота.
Добавлю. На C# попрут dllки из него? Фиг с ним с ObjectARX'ом.
Windows Presentation Foundation, это что за зверь.

Последний раз редактировалось Baldares, 01.12.2008 в 00:43.
Baldares вне форума  
 
Непрочитано 01.12.2008, 08:16
#88
Кулик Алексей aka kpblc
Moderator

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


А пока никак. Мне б 2005-ю студию начать крутить в руках, а то дальше лиспа никак не иду
На C# dll-ки "попереть" могут, но наверняка без танцев с бубнами не обойдешься. Был бы здесь Алекснадр Ривилис, он бы наверняка рассказал подробнее...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 01.12.2008, 08:33
#89
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,413
Отправить сообщение для Александр Ривилис с помощью Skype™


Не понял о чем рассказывать? Пока вижу один поток сознания. :-)
Александр Ривилис вне форума  
 
Непрочитано 01.12.2008, 08:42
#90
Кулик Алексей aka kpblc
Moderator

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


Я помню, что на caduser'е рассматривался вопрос использования VS 2005 для написания dll и arx-модулей для 2005-го и 2006-го acad'ов. Там что-то непростое было. Опасаюсь, что и здесь будет аналогичное.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 01.12.2008, 09:41
#91
Baldares


 
Регистрация: 17.10.2008
Саратов
Сообщений: 426


Цитата:
Сообщение от Александр Ривилис Посмотреть сообщение
Не понял о чем рассказывать? Пока вижу один поток сознания. :-)
Да щемит в груди. Как-это при наличии купленного (пусть и на горбушке ) диска с MVS2008, пользоваться 2005ым. Так еще и уже локализованный выпущен (гдеб достать ). И MSDN уже начал скачивать, а это 150часов непрерывной скачки (у меня скорость около 10 Кбит/с).
Вообщем щемит сильно

Кулик Алексей aka kpblc, а что же ты собираншся делать с ним. Без акада использовать. "Я так не играю" (с)
Baldares вне форума  
 
Непрочитано 01.12.2008, 10:11
#92
Кулик Алексей aka kpblc
Moderator

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


Я собираюсь сначала MSDN почитать Фицияльно, так скаать, переведенный
Baldares, сообщи в личку свой почтовый (обычный) адрес, DVD-шки со скачанными VS, MSDN, SP могу выслать.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 01.12.2008, 10:25
#93
Baldares


 
Регистрация: 17.10.2008
Саратов
Сообщений: 426


Кому выслать, куда выслать, за что, за сколько

Если им нельзя игратся с акадом, зачем он нужен.
Вот ты паачитай, и как сообразиш как его прикрутить к акаду, тады да, можно и о пересылке контрабанды подумать.

Читай внимательно

ps Ладно все, от смайликов рябит уже, закругляюсь.

А вот один сурьезный вопрос. У меня щас (дома) установлен MVS2005+MSDN все ессно англ.. Вот если я, как докачаю, установлю поверх рус.MSDN, он встанет, и так же будет открываться по Ф1?
Baldares вне форума  
 
Непрочитано 01.12.2008, 11:06
#94
Кулик Алексей aka kpblc
Moderator

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


Этого не знаю Но, думаю, справка для 2005 останется как и была - родной, английской. У меня дома установлена была в свое время "сладкая парочка" - 2002 и 2005 студии. На 2002-ю ухитрился "накатить" локализованную (частично) справку под 2003-ю. Там это работало. В 2005 - нет. Но, думаю, если покопаться, то можно будет и справку от 2008-й прикрутить к 2005, хотя это и не рекомендуется: можешь разыскивать свойства и методы, которых в старых студиях еще не было.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 01.12.2008, 11:35
#95
Baldares


 
Регистрация: 17.10.2008
Саратов
Сообщений: 426


Меня накрыло. Ну не своим делом занимаюсь. Инженер-чертежник, моя прямая обязанность, копи-паст, блин. Развития как инженера =0.
Пойду просить штоб оплатили обучение. Или буду искать работу, с возможностью проф.роста, или инженера, или программиста.

Вот оцени, я курсы подобрал, это у нас в Саратове, в Политехе: http://www.aptechsar.com/education.php?id=15
Смущает продолжительность 2года+1год спец.
Но думаю зато с 0, и будет фундамент так сказать.
Есть куча курсов продолжительностью от 16 до 45 часов. Но это мне кажется уже на знающих людей рассчитано.
Что скажешь?
Baldares вне форума  
 
Автор темы   Непрочитано 01.12.2008, 15:02
#96
Baldares


 
Регистрация: 17.10.2008
Саратов
Сообщений: 426


Кулик Алексей aka kpblc, как же я без твоего напутствия? Дай благословения.
Baldares вне форума  
 
Непрочитано 01.12.2008, 15:33
#97
Кулик Алексей aka kpblc
Moderator

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


Да мне некогда сурьезно прочитать. Так, по форуму иногда пробегаюсь... Дай времени, молю!
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 01.12.2008, 16:04
#98
Baldares


 
Регистрация: 17.10.2008
Саратов
Сообщений: 426


Отвечу, чтобы тебе не забыть.

Курс начинается с феврая.
Я в боевой готовности.
Baldares вне форума  
 
Непрочитано 01.12.2008, 16:45
#99
Кулик Алексей aka kpblc
Moderator

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


Скажу честно. Все бегом, поэтому могу заблуждаться.
Без подробного плана обучения что-либо внятное сказать сложновато. Комментарии выделены курсивом
Семестр 1:
1) Бизнес-общение и менеджмент Ну как же, а потрепаться? Необходимость именно этого куска лично у меня под большим вопросом - примерно как философия на ПГС.
2) Разработка Web-страниц (Html, DHTML, JavaScript, Dreamweaver) [Все в одну кучу - и блокнот, и программирование, и специализированное ПО. А чего MS FrontPage сюда не сунули?
3) Базы данных Access'2000, SQL Server 2000 [А это-то тут каким боком? Не, дело, конечно, нужное, но вот либо Access, либо SQL Server - одно для "настольных" приложений, второе - уже для более-менее серьезных вещей. Там подходы немного разные. Да и язык SQL, по-моему, тоже различается. Уж лучше бы брали что-то одно и его читали.
3) Логическое программирование на С [Это сильно. Это посильнее "Фауста" Гете. Что тут собираются читать? Определение функций? Синтаксис языка? Работу с памятью? С нуля на это дело времени ИМХО выделено маловато.
4) Курсовой проект [Ну понятно, отчислять-то надо
Семестр 2:
1) Программирование для Internet (Java) А что сразу вместе с JavaScript не сунули? По идее информация в таком случае усваивалась качественнее. А еще лучше - сначала Java, потом JavaScript. Кстати, чистый Java или J#? И в какой интертрепации (тьфу, интерпретации) - от Sun или от MS?
2) Разработка объектно-ориентированных приложений на языке C# Понятно, теперь начинаем рассматривать классы, наследование, инкапсуляцию, объекты, стеки... Если бы в первом семестре читали не С, а С++, толку было бы больше.
3) Платформа .NET & C# То есть сначала изучили язык, теперь смотрим, с чем и как он работает. По логике я бы поменял местами пп2 и 3
4) Разработка приложений на основе Winforms с С# Наверное, имелось в виду "разработка Windows- и/или Web-приложений с использованием классов System.Windows.Forms в среде C#" (тут плаваю, возможно, все намного проще). Интересно, тут будут долго рассматривать контролы и раскидывать их по форме или нет?
Семестр 3:
1) Основы XML. Интересно, дадут полную спецификацию XML или нет? И будут ли там даваться схемы данных? И будет ли объяснено, как работать с XML-документом (имею в виду создание самого документа, схемы для него, внесения новых записей и т.п.). И будет ли здесь читаться ADO.NET со всеми вытекающими?
2) Объектно-ориентированное представление данных с помощью UML. UML - по-моему, Universal Markup Language. Это единственное, что я про него знаю. Тут - пас. Возможно, этот пункт пересекается с п.1.
Специализации и Семестр 4Тут вообще практически по нулям. Надобность в Linux, Apache, MySQL - вопрос. По идее работа с MySQL мало чем должна отличаться от работы с MS SQL. Но это только по идее. Perl, php - возможно, надо, не знаю.
Что такое eProject - без понятия. Вроде не встречал

Семестры 5 и 6, как я понял, посвящены работе с серверами Microsoft (как для LAN, так и для Internet). Тут я пас совсем.
P.S. Сейчас придут профессионалы и разгромят меня в пух и прах
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 01.12.2008, 19:44
#100
Baldares


 
Регистрация: 17.10.2008
Саратов
Сообщений: 426


Не знаю кто придет. Мне твое мнение важнее всех.

Да. Жиденькие курсы. Не узнавал, но и преподают наверно по старинке - лекции+тетрадочка, как ты любишь говорить "на сухую".
Знакомы проходил курсы менеджмента. Так ему дали гору материала, дисков. В лучшем виде. Хотелось бы так же.

Главное, мне нужно определится, кем я хочу быть инженером или программистом.

По образованию - инженер-строитель ПГС 99-2004гг.(Мама, роди меня обратно, уже 4года прошло)

Сейчас я работаю инженером, но инженерных задач передо мной не ставиться. Как "тетка" сижу с 8 до 17, копи-пастю. Ну и для себя пописываю макросики. В моем програм-ии есть заинтересованность только у Гл.спеца отдела. Так дело дальше не пойдет, это "ни то, ни сё".

1. Если инженером. Нужно искать работу, где можно будет развиваться как инженеру. Вариантов с местом работы поа нет. Хотя, можно попробовать перейти в другой отдел (есть еще два конструкторских) , это проще будет, чем на новое место работы переходить.

2. Если программистом. У нас в проектном институте нет программера(ов). Не паханное поле так сказать. Но и заинтерессованности в нем тоже не чувствуется. САПРовцы заикнулись про СТП, провели собрание, и заглохло. Как показатель сайт. Нужно справоциравать руководство, на необходимость в программисте. И можно было бы учится сколько влезет.

Вот голову ломаю, а цель себе поставить не могу. Что выбрать. Алексей ты знаешь.
Baldares вне форума  
 
Непрочитано 01.12.2008, 19:54
#101
DEM

YngIngKllr
 
Регистрация: 29.03.2005
СПб
Сообщений: 12,968


Baldares
Автоматизируй свою рутину, особо об этом не распротраняйся, делай работу чуть быстрее чем другие. Оставшееся время можншь потратить на самообразование.
__________________
Работаю за еду.
Working for food.
Für Essen arbeiten.
العمل من أجل الغذاء
Працую за їжу.
DEM вне форума  
 
Автор темы   Непрочитано 01.12.2008, 19:55
#102
Baldares


 
Регистрация: 17.10.2008
Саратов
Сообщений: 426


А еще в этих курсах нет самого процесса создания приложения. Ну типа как в "САПРе на базе" описывается.
Это минус. Фиговенько.
Baldares вне форума  
 
Автор темы   Непрочитано 01.12.2008, 19:59
#103
Baldares


 
Регистрация: 17.10.2008
Саратов
Сообщений: 426


DEM, мне хотелось бы или конструкторской/проектривовщицкой аботой заниматься, и тут бы я помогал себе своими программками, или же программистом со знанием инженерной специфики.
А щас, грю, "ни то, ни сё". И С П О Л Н И Т Е Л Ь, чернорабочий. Или как в америке - чертежник. Не хочу так.
Baldares вне форума  
 
Непрочитано 01.12.2008, 20:01
#104
DEM

YngIngKllr
 
Регистрация: 29.03.2005
СПб
Сообщений: 12,968


Baldares
Я тоже в начале лестницы рисовал......
__________________
Работаю за еду.
Working for food.
Für Essen arbeiten.
العمل من أجل الغذاء
Працую за їжу.
DEM вне форума  
 
Непрочитано 02.12.2008, 00:26
#105
Кулик Алексей aka kpblc
Moderator

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


Baldares, открою тебе страаашную тайну: я по характеру жуткий лентяй. И по складу ума не совсем инженер (хотя тоже закончил ПГС, мать моя!- аж в 1996 году). Мне намного проще сделать один раз и потом не возвращаться к решенному вопросу.
Если тебе интереснее ускорить собственную работу (достаточно рутинную. Например, настройку текстового стиля, простановку размеров, моментальную очистку файла от накопившегося мусора - при открытии и закрытии, рисование двумя-тремя кликами полного пути крана на ГП - с путями, опасными зонами, зонами складирования и т.п.) и, как следствие, иметь больше свободного времени; если тебе неинтересно в принципе составлять таблицы спецификаций руками; если тебе нравится нормально оформленный чертеж; если тебе неинтересно переделывать одно и то же сотни раз (например, переводить пришедшие от АР файлы в "подложку" или "обрезать выносные линии размеров по указанной прямой"); если ты понимаешь, что динамические блоки тебя не спасают (номенклатура изделий вечно меняется/дополняется); если... Короче, в таком варианте тебе дорога в программисты
Сугубо ИМХО, как всегда.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 02.12.2008, 09:20
#106
Baldares


 
Регистрация: 17.10.2008
Саратов
Сообщений: 426


Эх, лентяй. Во-первых ты трудоголик, а уж может во-вторых лентяй
Кому ж интересна рутинная работа. Была бы возможность, все были бы програмерами.

Такc, закинул удочку, на счет курсов, начальнику. Посмотрим.
От судьбы не уйдеш
Baldares вне форума  
 
Непрочитано 02.12.2008, 09:36
#107
DEM

YngIngKllr
 
Регистрация: 29.03.2005
СПб
Сообщений: 12,968


Свою то задачу ты решил, а то ты по моему в сторону ушел.
__________________
Работаю за еду.
Working for food.
Für Essen arbeiten.
العمل من أجل الغذاء
Працую за їжу.
DEM вне форума  
 
Автор темы   Непрочитано 02.12.2008, 10:03
#108
Baldares


 
Регистрация: 17.10.2008
Саратов
Сообщений: 426


DEM, ну да , алгоритм твой из #66, осталось реализовать. Я тоже ленивый
Как припрет проставлять 15000 выносок, на всех чертежах, тогда мигом всля ленивость пропадет. Пока сиськи мнут.
Baldares вне форума  
 
Автор темы   Непрочитано 02.12.2008, 10:12
#109
Baldares


 
Регистрация: 17.10.2008
Саратов
Сообщений: 426


"Каким же надо быть дураком, что бы не быть ленивым."

Прошу зафиксировать за мной афоризм.
Baldares вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Выбор узловых выносок СПДС (SpdsNoteKnot) по образцу текущей выделенной.



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Копирование данных для спецификаций из выносок СПДС в таблицу из мтекстов Red Nova Программирование 177 08.12.2008 11:35