Реклама / ООО «ИЗОЛПРОЕКТ» / ИНН: 7725566484 | ERID: 2Vtzqx6kV7S
IPB IPB
Проектирование, монтаж, наладка, сервис


Здравствуйте, гость ( Вход | Регистрация )

- Стандарт НП «АВОК» 7.11-2024
«Рекомендации по проектированию инженерных систем
дошкольных образовательных организаций»

АВОК в соц. сетях
ИНН: 7714824045 | erid: 2VtzqwzKQiU
20 страниц V  « < 8 9 10 11 12 > »   
Добавить ответ в эту темуОткрыть тему
> Создание спецификации автоматически (Дубль2), Рассматриваются технология и ее реализация по автоматическому создани
Гость_Supermax_*
сообщение 10.9.2007, 20:28
Сообщение #244





Guest Forum






О! Возможности везде есть. Люди ведь не только за бабки пашут. Интерес и личные идеи реализовывают. Но есть такая пакость как эволюция. Проги, которые имеют то, что имеют благодаря их собственной эволюции так просто с наскока не напишешь. Опыт есть опыт. AutoCAD - эволюционный продукт. Когда начинают что-то с нуля, или на базе известной платформы, то с нуля, сами понимаете, а на базе платформы про саму платформу забывают. Она перестает эволюционировать и все в целом храмает на обе (или сколько там их у нее) ноги. Проанализируйте все продукты "на платформах" и увидите то, о чем мы тут печемся.
Это совсем не означает, что надо все продукты отвергать, просто не надо писать для всей линейки. Кесарю - кесарево, а слесарю - слесарево. Вот драйвера к плотерам ведь все разные. Для каждой операционки отдельно выпущены, а не адаптированы.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Гость_Supermax_*
сообщение 10.9.2007, 22:20
Сообщение #245





Guest Forum






Спешу еще добавить, а то сейчас охранники заявятся и будут плакаться, что надо под охрану офис ставить.
Отсутствует общая идеология перспектив развития проектирования. Почти во всех институтах пытаются создать хоть какое-то подобие концепции этой самой перспективы, но разработчики всяких кадов эти концепции не видят, поскольку их к их созданию не привлекают. В результате реализовывать эти концепции нечем. Не видно в AutoCAD-e следов хоть как-то организованных идеалогий. Есть некоторые детали, да только в общую картину никак не склеиваются. Как скажите развивать програмный продукт, если проектирование не развивается?
Была с самого начала установка - с начала моделировать тело, а потом его в Layout-ах в разных ракурсах и разрезах показывать, так кроме железячников этим никто руководствоваться не спешит. Вот какого хрена сделали в AutoCAD-e возможность распечатывать Model? Как людей отучить теперь рамки со штампами в ней рисовать?
Предлагаю сделать диверсию - написать постоянно действующий макрос, который не дает печатать из модели.
Как только станет ясно как будет развиваться проектирование, сразу станет ясно что и как нам писать.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
kpblc
сообщение 10.9.2007, 23:07
Сообщение #246


CAD Developer


Группа: Участники форума
Сообщений: 409
Регистрация: 6.2.2006
Из: C.-Петербург, Россия
Пользователь №: 2062



Ну, по-моему, тут звучит "взгляд не с того конца истории". Пространство листа в AutoCAD'е же не сразу появилось. В 12-й версии под DOS его еще не было.
Цитата
Была с самого начала установка - с начала моделировать тело, а потом его в Layout-ах в разных ракурсах и разрезах показывать, так кроме железячников этим никто руководствоваться не спешит

Почему? Архитекторы, работающие в ADT, очень широко этим пользуются.
Цитата
Вот какого хрена сделали в AutoCAD-e возможность распечатывать Model?

Не дали, а оставили. Посмотрим, что будет в 2009 wink.gif
Цитата
Предлагаю сделать диверсию - написать постоянно действующий макрос, который не дает печатать из модели.

Я - пас. Из принципа.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Bers
сообщение 11.9.2007, 14:50
Сообщение #247





Группа: Участники форума
Сообщений: 1587
Регистрация: 24.1.2005
Из: Чита
Пользователь №: 384



Цитата(Supermax @ 11.9.2007, 5:20) [snapback]164719[/snapback]
...Вот какого хрена сделали в AutoCAD-e возможность распечатывать Model? Как людей отучить теперь рамки со штампами в ней рисовать?
Предлагаю сделать диверсию - написать постоянно действующий макрос, который не дает печатать из модели.
Как только станет ясно как будет развиваться проектирование, сразу станет ясно что и как нам писать.

Пардон за маааленький офф-топ. Если осуществить предлагаемую Вами диверсию, то 90% проектных контор на территории нашей необъятной Родины обанкротятся, по причине того, что не смогут распечатать свою продукцию. У Вас здесь интересный, конструктивный диалог о высоких материях, но в реальности львиная доля чертежей выполняется в модели вместе с "рамочками" и печатается оттуда же на струйных принтерах с использованием цветозависимого стиля печати по фамилии "monochrome". Это - будни проектировщиков "на местах" ("местами" эта реальность до сих пор не вышла за границы 14-й версии АвтоКАДа) и с ней (реальностью) тоже нужно считаться:-) Не смотря на все рассуждения, нужно более реально смотреть на вещи.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
kpblc
сообщение 11.9.2007, 21:47
Сообщение #248


CAD Developer


Группа: Участники форума
Сообщений: 409
Регистрация: 6.2.2006
Из: C.-Петербург, Россия
Пользователь №: 2062



> Bers : К сожалению (или счастью, не знаю), но минимальная версия AutoCAD'a была ограничена практически в самом начале темы - AutoCAD 2006. В R14 не было объектной модели и VBA, насколько я слышал; также там не было до конца реализовано пространство модели, про дин.блоки и палитры инструментов там даже заикаться не след - засмеют; arx еще не был привязан к студии от MS ну и так далее.
Кстати, эту "диверсию" выполнить лично мне (на моем сегодняшнем уровне знаний) невозможно априори. И кроме того, даже если она будет выполнена, я за полчаса (снести кад - очистить винт и реестр - поставить кад) эту диверсию ликвидну так, что и памяти о ней не останется.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Гость_Supermax_*
сообщение 17.9.2007, 16:54
Сообщение #249





Guest Forum






Добавлю немного интересного.
Сейчас собираю дом из отдельных кирпичей, камней Knauf и пластинок-солидов иммитирующих раствор.
Все кирпичи, 2/3, половинки, четвертушки и все виды камней - блоки. Лежат в 0-ом слое. солиды раствора лежат в слое "Раствор кладочный".
С начала (после первых 5-ти рядов) модель стала очень тяжелой. Объединил ряды в блоки и модель стала легче, но по окончании 1-го этажа все равно стала грузить мою нервную систему.
Demontage написал макрос всего из трех кнопок "Включить все", "Оставить выделенное" и "Выключить выделенное". Все, что захочешь можно выключить не зависимо, в каком слое оно лежит.
Дело стало просто кайф!
Сохраняется модель с установками на выкл. и загружается тоже с выключенными элементами. Просто мгновенно!
Когда включаешь все, долго рисует, но рисует исправно, без выбросов "фатала егора". Только начинаешь крутить, или работать с полностью включенными элементами - все! Рушится!.
Хочу макрос переделать на включение и выключение по областям. Точка и радиус области, только не шар, а куб. Все, что в область попадает может быть выключено, или включено, а также вокруг области тоже самое.
Чтобы областей было несколько, вообще, чтобы создавались по желанию сколько хочешь.
А вот подсчет элементов можно делать и не включая их. От дома или этажа один только контур, а установив в нем область подсчитает все, что в ней. Зачем спрашивается их включать?.

Файл огромный, элементов в нем уйма, а работать с ним можно на любой, даже самой "недоукомплектованной" машине. Только меньше элементов надо включать. Я думаю, что даже подгрузку элементов при "включить все" надо делать лотами с диалогом типа "еще грузить?".
Вот делаешь теплопункт и возишся с обвязкой теплообменника, зачем тебе все остальное в памяти, да и обзор закрывает. Чудесный одним словом макрос получился.

Сообщение отредактировал Supermax - 17.9.2007, 19:59
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
kpblc
сообщение 17.9.2007, 17:23
Сообщение #250


CAD Developer


Группа: Участники форума
Сообщений: 409
Регистрация: 6.2.2006
Из: C.-Петербург, Россия
Пользователь №: 2062



Ххе, еще раз смотрим на пост #241. Кстати, интересно было бы посмотреть на этот макрос - насколько оно совпадает с моим кодом smile.gif.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Гость_Supermax_*
сообщение 17.9.2007, 19:38
Сообщение #251





Guest Forum






На VBA и с панелью кнопок.
Скоро выложу.
Я чесно говоря, на эту строчку и внимание-то не обратил. А зря, зря!
Кнопки приделать к твоему макросу можно прямо кадовские, без напрягов с писанием панели.
Сейчас протестирую.
Все, протестировал.
И Дима Demontage, тобишь, и ты на одни и теже грабли наступили. Во, оказывается болезнь-то заразная, как бы не подхватить..
Когда выделяешь объекты и командуешь "скрыть выделенное" они скрываются, НО! не дезактивируются!
если после этого выделить какой-нибудь объект из оставшихся и его передвинуть, или еще хуже того - грохнуть, то и те, что скрылись, но не дезактивировались тоже сместятся или канут в небытие.
Включаешь "включить все" а их и нетути!
Я пол модели так грохнул, слава богу кад не выключал и назад откатил (2 часа упорного труда по восстановлению).
В конец надо эскейп вставить, а то люди могут пострадать!

Свй макрос я удалил, поскольку он хуже Kpblc-овского.

Сообщение отредактировал Supermax - 18.9.2007, 19:57
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
kpblc
сообщение 18.9.2007, 11:11
Сообщение #252


CAD Developer


Группа: Участники форума
Сообщений: 409
Регистрация: 6.2.2006
Из: C.-Петербург, Россия
Пользователь №: 2062



Работает только для пространства модели (то есть набор должен формироваться в пространстве модели).
Код
(defun kpblc-objects-hide (bit
                           /
                           *error*
                           _kpblc-error-catch
                           _kpblc-layer-status-restore
                           _kpblc-layer-status-save
                           selset
                           selset_all
                           msg
                           item
                           )
        ;|
*    Скрытие выбранных объектов / невыбранных объектов / показ всех объектов.
* Сделано в качестве попытки создания аналога ADT-шной команды Isolate objects.
* Работает только в активном пространстве.
*    Параметры вызова:
*  bit  что делать. 0 — показать все; 1 — скрыть выделенные; 2 — скрыть
*    все, кроме выделенных
*    Примеры вызова:
(kpblc-objects-hide 0); Показать все объекты
(kpblc-objects-hide 1); Скрыть выделенные объекты
(kpblc-objects-hide 2); Скрыть все, кроме выделенных
|;

  (defun *error* (msg)
    (_kpblc-layer-status-restore)
    (vla-endundomark *kpblc-activedoc*)
    (princ msg)
    (princ)
    );_ end of defun

  (defun _kpblc-error-catch (protected-function
                             on-error-function
                             /
                             catch_error_result
                             )
                ;|
*** Функция взята из книжной версии ruCAD'a без каких бы то ни было переделок,
*** кроме переименования.
*    Оболочка отлова ошибок.
*    Параметры вызова:
*    protected-function    - "защищаемая" функция
*    on-error-function    - функция, выполняемая в случае ошибки
|;
    (setq catch_error_result (vl-catch-all-apply protected-function))
    (if (and (vl-catch-all-error-p catch_error_result)
             on-error-function
             );_ end of and
      (apply on-error-function
             (list (vl-catch-all-error-message catch_error_result))
             );_ end of apply
      catch_error_result
      );_ end of if
    );_ end of defun

  (defun _kpblc-layer-status-restore (/ item)
                ;|
*    Восстановление состояния слоев из глобального списка
* *kpblc-list-layer-status*
*    Параметры вызова:
*    нет
*    Примеры вызова:
(_kpblc-layer-status-restore)
|;
    (if *kpblc-list-layer-status*
      (progn
        (foreach item *kpblc-list-layer-status*
          (_kpblc-error-catch
            '(lambda ()
               (vla-put-freeze (car item) (cdr (assoc "freeze" (cdr item))))
               );_ end of LAMBDA
            nil
            );_ end of _kpblc-error-catch
          (_kpblc-error-catch
            '(lambda ()
               (vla-put-lock (car item) (cdr (assoc "lock" (cdr item))))
               );_ end of LAMBDA
            nil
            );_ end of _kpblc-error-catch
          );_ end of foreach
        );_ end of progn
      );_ end of if
    (setq *kpblc-list-layer-status* nil)
    );_ end of defun

  (defun _kpblc-layer-status-save (layers-on / item)
                ;|
*    Разблокировка и разморозка всех слоев активного документа. Состояние
* сохраняется в глобальном списке *kpblc-list-layer-status* вида
* '(vla-указатель ("freeze" . :vlax-true) ("lock" . :vlax-false))
*    Параметры вызова:
*    layers-on    включать слои (t) или нет (nil)
*    Примеры вызова:
(_kpblc-layer-status-save t)
|;
    (vlax-for item (vla-get-layers *kpblc-activedoc*)
      (setq *kpblc-list-layer-status*
             (append *kpblc-list-layer-status*
                     (list
                       (list item
                             (cons "freeze" (vla-get-freeze item))
                             (cons "lock" (vla-get-lock item))
                             );_ end of list
                       );_ end of list
                     );_ end of append
            );_ end of setq
      (if layers-on
        (progn
          (_kpblc-error-catch
            '(lambda ()
               (vla-put-freeze item :vlax-false)
               );_ end of LAMBDA
            nil
            );_ end of _kpblc-error-catch
          (vla-put-lock item :vlax-false)
          );_ end of progn
        );_ end of if
      );_ end of vlax-for
    );_ end of defun

  (vl-load-com)
  (or *kpblc-activedoc*
      (setq *kpblc-activedoc* (vla-get-activedocument (vlax-get-acad-object)))
      );_ end of if
  (vla-startundomark *kpblc-activedoc*)
  (_kpblc-layer-status-save t)
  (cond
    ((= bit 1) (setq msg "Скрыть выделенные объекты"))
    ((= bit 2) (setq msg "Скрыть кроме выделенных"))
    );_ end of cond
  (if (= bit 0)
    (progn
      (foreach item
               (mapcar
                 'vlax-ename->vla-object
                 (vl-remove-if 'listp (mapcar 'cadr (ssnamex (ssget "_A"))))
                 );_ end of mapcar
        (vla-put-visible item :vlax-true)
        );_ end of foreach
      );_ end of progn
    (progn
      (setq selset (ssget "_I"))
      (while (not selset)
        (prompt msg)
        (setq selset (ssget))
        );_ end of while
      (cond
        ((= bit 1); Скрывать выделенные
         (foreach item
                  (mapcar 'vlax-ename->vla-object
                          (vl-remove-if 'listp (mapcar 'cadr (ssnamex selset)))
                          );_ end of mapcar
           (vla-put-visible item :vlax-false)
           );_ end of while
         )
        ((= bit 2); Скрывать кроме выделенных
         (setq selset_all (ssget "_A"))
         (while (and selset_all (> (sslength selset_all) 0))
           (setq item (ssname selset_all 0))
           (ssdel item selset_all)
           (if (not (ssmemb item selset))
             (vla-put-visible (vlax-ename->vla-object item) :vlax-false)
             );_ end of if
           );_ end of while
         )
        );_ end of cond
      );_ end of progn
    );_ end of if
  (sssetfirst nil nil)
  (_kpblc-layer-status-restore)
  (vla-endundomark *kpblc-activedoc*)
  (princ)
  );_ end of defun

(defun c:hideobj (/ answer)
  (vl-load-com)
  (if
    (not (vl-catch-all-error-p
           (vl-catch-all-apply
             '(lambda ()
                (initget
                  "Показать Выделенные Кроме Show SElected Exculde _ 0 1 2 0 1 2"
                  );_ end of initget
                (setq answer
                       (getkword
                         "\nЧто делаем [Показать все/скрывать Выделенные/скрывать Кроме выделенных] <Отмена> : "
                         );_ end of GETKWORD
                      );_ end of setq
                );_ end of lambda
             );_ end of vl-catch-all-apply
           );_ end of vl-catch-all-error-p
         );_ end of not
     (kpblc-objects-hide (atoi answer))
     );_ end of if
  );_ end of defun

P.S. Код из #253 снес
P.P.S. Загружать все, вызов с ком.строки - hideobj.

Сообщение отредактировал kpblc - 19.9.2007, 15:19
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Гость_Supermax_*
сообщение 18.9.2007, 18:24
Сообщение #253





Guest Forum






С замком стало все в порядке, вот разморозка не хочет размораживаться, да и у меня при замораживании объекты с экрана исчезают. Вообще-то я этим "холодильником" не пользуюсь может чего-то не так делаю?
Ты можешь мне объяснить зачем нужен этот "Freeze"?

Предлагаю ничего не менять, а просто хелпик в макросе подтереть. Оставить только включение и выключение. И так нормально аж до визгу.

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

Сообщение отредактировал Supermax - 18.9.2007, 20:01
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
kpblc
сообщение 18.9.2007, 20:46
Сообщение #254


CAD Developer


Группа: Участники форума
Сообщений: 409
Регистрация: 6.2.2006
Из: C.-Петербург, Россия
Пользователь №: 2062



Ну я ж не автодеск... Глобальным Freeze я пользуюсь если надо и объекты скрыть, и защитить их от удаления (простое выключение слоя от ctrl+a не спасает). А вот внутри видовых экранов - очень полезная штука.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Гость_Supermax_*
сообщение 19.9.2007, 14:52
Сообщение #255





Guest Forum






Kpblc, как тебе краники и прочие детали? Ты говорил, что живешь на DWG.RU. Это я только 20-30 меговые папки кидаю, а у меня еще и 300 меговые есть, да и новый диск ожидаю на днях.
Очень плохо, что там только солиды, да и многие из отдельных солидов состоят (шпильки, гайки и т.п.) все не раскрашенное и без опознавательных данных. Такого понатыкаешь в монтажку, до-о-олго голову будешь ломать над тем ху-из-ху.

Консолидация мозгов и трудовых резервов в интернете не идет пока накак. Говоришь людям: "давайте все вместе, каждый по штучке" а они молчат, попрятались и ждут, когда найдуться человек 100 дураков, все сделают и им дадут на халяву. Наши производители - вообще отдельная песня. Сайты у них - без слез смотреть нельзя. Видно, что напрягаются, да только от напряжения свои извилины выпрямляют.
Предложил серию ППУ труб забацать дин. блоками. Научить готов, хочу взамен 4 штуки таких, каких у меня нет. Наверное много хочу. Самое интересное, что у меня на всю серию графика готова. Осталось взять существующий блок и отредактировать. Нет, и этого оказывается много за знания. Пишут крики о помощи найти литературу по дин. блокам, а принять мое предложение слабо.
ХАЛЯВЩИКИ! Как я их всех ненавижу!
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
kpblc
сообщение 19.9.2007, 15:14
Сообщение #256


CAD Developer


Группа: Участники форума
Сообщений: 409
Регистрация: 6.2.2006
Из: C.-Петербург, Россия
Пользователь №: 2062



ты про download тамошний? Я его не отслеживаю - и без того негрустно (хочешь, посмотри, к примеру, задачку http://dwg.ru/forum/viewtopic.php?p=174368 - у меня что-то логика зашкалила.
Насчет "кто есть ху" - попробуй использовать группы, может, они тож помогут.
Добавлено: Посты почистил по обсуждению кода

Сообщение отредактировал kpblc - 19.9.2007, 15:18
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
mmax
сообщение 19.9.2007, 23:41
Сообщение #257





Группа: Участники форума
Сообщений: 51
Регистрация: 18.6.2007
Из: Череповец
Пользователь №: 9568



Поробую вернуться к теме создания спецификации.
Мной было замечено и случайно установлено, что
В ОС Vista, если компьютор перезагружен, и после перезагрузки Excel ниразу не запускался, то при выполнении кода
Код
(setq excelobj (vlax-create-object "Excel.Application"))

excelobj получается только если выполнить код 2-3 раза. Первый запуск будет nil 100%.
тоже самое в VS2005
Код
dim excelobj as object
excelobj = createobject("Excel.Application", "")

тут ошибка Err().Number = 429.
при повторных запусках объект получается без проблем.

Если же ексель запускался обычным образом, то объект формируется с первого раза



Если в бейсике можно проигнорировать ошибку без проблем, добавив:
Код
on error resume next

и до end sub все ошибки будут проигнорированы.

То в лиспе вот так вот просто это сделать не получится.
Есть над чем голову поломать.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
kpblc
сообщение 20.9.2007, 0:21
Сообщение #258


CAD Developer


Группа: Участники форума
Сообщений: 409
Регистрация: 6.2.2006
Из: C.-Петербург, Россия
Пользователь №: 2062



В лиспе есть специальная функция (vlax-get-or-create-object), ею и пользуйся. Ведь и в VB приходится делать аналог:
Код
' VB 6.0, VBA
Sub Main()
Dim objExcel As Object
  On Error Resume Next
  Set objExcel = GetObject("Excel.Application", "")
  If Err.Number <> 0 Then
    Err.Clear
    On Error GoTo 0
    Set objExcel = CreateObject("Excel.Application")
  End If
  ' Ну и тут пошли операции с ним
End Sub

Код
' VB.NET 2002Public Function MyFunc()
        Dim objExcel As Object
        Try
            objExcel = GetObject(, "Excel.Application")
        Catch
            objExcel = CreateObject("Excel.Application"))
        End Try
        ' Ну и так далее
    End Function

В .NET я не работаю (не довелось sad.gif), так что там могут быть проблемы.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
mmax
сообщение 20.9.2007, 17:22
Сообщение #259





Группа: Участники форума
Сообщений: 51
Регистрация: 18.6.2007
Из: Череповец
Пользователь №: 9568



Ты так ничего и не понял.
GETobject, не даст объекта, даже с сотого запуска, если ексель в данный момент не запущен.
CREATEobject дает объект даже если приложение НЕ запущено, если приложение запущено, то она запустит его в отдельном процессе.
Это делаеца одинаково что в VS что в LISP.

Тут ситуация другая: в ос Windows Vista нужна функция create-or-create-object

если я ВКЛЮЧИЛ компьютор, и сразу запустил программу взаимодействующую с екселем, НЕ запуская ексель обычными способами, то функция CREATEobject не даст объекта, с первого раза.
пару раз замечалось, что объект получается только с третьего раза.

если я ВКЛЮЧИЛ компьютор, и запустил Ексель из меню пуск, а потом закрыл его. Или пользовался программами которые используют объектную модель екселя
то CREATEobject сработает сразу.

Тоесть получается вывод, если в процессе работы компьютора, с момента его включения, к екселю не было обращений, то функция CREATEobject возвратит объект только если ее запустить не менее 3х раз, причем это самое количество раз окончательно не установлено.
Если в автокаде выполнить 1раз (vlax-create-object), то возвратится nil, а потом в VS CREATEobject, то объект получается. Тоже самое наоборот VS CREATEobject = ошибка -> (vlax-create-object)=vlaobject, тоже самое c (vlax-get-or-create-object) -- превый раз пролетаем.

Моя программа не связана с автокадом, автокад я пробовал для сравнения и результат одинаковый.
мне без разницы запущен ексель или нет, экспорт выполняется в один клик и при каждом клике запускается ексель с новой книгой и уже заполненой таблицей и моя программа на этом прекращает взаимодействие с екселем, сохранение и редактирование полученного документа отдаются на растерзание пользователю средствами самого екселя.

для того чтобы дотучаться до объекта, пришлось сделать вот так:

Код
Dim eobj As Object
        On Error Resume Next
        Err().Clear()
        eobj = CreateObject("Excel.Application", "")
        MsgBox(eobj) 'если объект найден этого сообщения не будет, если не найден будет сообщение без текста

        If Err().Number = 429 Then
            Err().Clear()
            eobj = CreateObject("Excel.Application", "")
            MsgBox(eobj)
        End If


        If Err().Number = 429 Then
            Err().Clear()
            eobj = CreateObject("Excel.Application", "")
            MsgBox(eobj)
        End If

        If Err().Number = 429 Then
            Err().Clear()
            MsgBox("Excel not found")
        End If


Не знаю, есть ли такая проблема в XP, у меня Vista.
также не установлено проблема это только с объектами офиса, или такая бодяга и с другими приложениями.
У Vistы есть еще одна проблема, ЗАКРЕПЛЕННЫЕ в меню пуск ярлыки AutoCAD2008EN, Excel Word (2003), не работают вообще. А которые в ПУСК->Программы и перетащенные на рабочий стол работают.

Вобщем я хочу поднять вопрос о совместимости.
Если так прикинуть, то в старых программах есть средства обработки событий связанных с отсутствием чего либо и особо страшного ничего не произойдет.
но вот конкретно в моей ситуации это самое "чего либо" присутствует и зарегистрировано, но при первом запуске раньше всегда получалось NOT FOUND, а потом работает нормально. Мелочь но НЕприято mad.gif .
И если моя теперяшняя программа запрашивает объект три раза, и это не гарантирует положительного результата, то при использовании старой прораммы в новой ОС нас может ждать полный Not Found.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
kpblc
сообщение 20.9.2007, 19:52
Сообщение #260


CAD Developer


Группа: Участники форума
Сообщений: 409
Регистрация: 6.2.2006
Из: C.-Петербург, Россия
Пользователь №: 2062



Ну извини, я Vista не ставил - машина не потянет, да и многие вещи (в том числе и по работе) приходится делать с расчетом на Win2k, максимум на ХР. Скорее всего, у тебя в офисе не установлена поддержка .NET-программирования (это только мои подозрения, не больше). И, как следствие, у тебя идет попытка найти офисные приложения через старые API-функции и не находит. А то, что после запуска обнаруживается - ну бог его знает, по каким причинам. ЯТД, проблема в ОС.
---
Добавлено: хотя на фига открывать Excel, я не очень понимаю. Учитывая тенденции некоторых контор переходить на OpenOffice, решение теряет смысл. Файл можно и так записать - хоть как xls (обычный текстовый файл, с разделением \t), хоть как xml, проанализировав тот вариант, который сделает Excel. Работка муторная, но иногда необходимая.

Сообщение отредактировал kpblc - 20.9.2007, 20:11
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
mmax
сообщение 20.9.2007, 20:26
Сообщение #261





Группа: Участники форума
Сообщений: 51
Регистрация: 18.6.2007
Из: Череповец
Пользователь №: 9568



Ну не везде так плохо. На завод врядли пустят представителей Microsoft, для проверки компов. Всетаки частная собственность, объект повышенной опасности итп, служба охраны круче ФСБ....

Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Гость_Supermax_*
сообщение 21.9.2007, 10:29
Сообщение #262





Guest Forum






Kpblc, с темы в DWG.RU про маркировку я ушел. Не та тусовка. Лично тебе скажу, Свойство длинны дублировать атрибутом DLINA - глупо. Надо читать свойство (тут у нас в теме это описано), округлять значение и прописывать полученное значение этому же свойству. Элементы слегка дернуться и станут видны нахлесты, или недостача. Все *Unnn тоже подравняются и будут готовы к использованию (если то потребуется).
Проставлять на плане вместо номера элемента номер позиции в спецификации, что окрестили как маркировка (хотя маркировка это присвоение марки изделию) - продукт деградации нашего проектного дела. Я не могу так маркировать элементы только по тому, что мне приходится составлять тех. карты в которых я должен описать последовательность установки изделий, даже если они все одинаковые. Вот пронумеровать их так, чтобы одна длина была описана номерами без пропусков 1, 2, 3, ....10, 11 а следующая длина была 12, 13, 14, .... 21, 22 и т.д. дело стоящее. Тогда в спецификации пишется все замечательно Длина 1 эл.ты №1-11. Длина 2 Эл.ты 12-22. Собрать все имена блоков, подравнять длины, сгруппировать, ну и посчитать заодно и промаркировать.
Так, что-то мы забежали очень далеко в перед. Но концепция примерно такая.

Добавил: VVA я сюда завернул, может и пригодится.

Сообщение отредактировал Supermax - 21.9.2007, 11:02
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
kpblc
сообщение 21.9.2007, 13:58
Сообщение #263


CAD Developer


Группа: Участники форума
Сообщений: 409
Регистрация: 6.2.2006
Из: C.-Петербург, Россия
Пользователь №: 2062



Я не в силах спорить (температурю со страшной силой), хочу только одно сказать - твой подход может оказаться неприменим в некоторых областях. Например, при проектировании навесных фасадов одинаковые элементы маркируются (им проставляются позиции) одинаково. Может, еще и в ЖБ аналогично - не помню. Я ж не зря в самом начале говорил, что надо определяться с тем, какие критерии важны. Потому что если этого не сделать, то получается нечто типа того чудовища, что я выкладывал.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Гость_Supermax_*
сообщение 21.9.2007, 15:03
Сообщение #264





Guest Forum






Твое возражение принимаю, но замечу, что голыми цыфрами это делать нельзя. Вот чел. стойки на чертеже указал и спецификацию что, только на стойки выпустил? Интересная спецификация однако... Ладно, на том же листе табличку вставил, а проект что из одного листа состоит? В конце общую спецификацию что Бобринский делать будет? Или при заказе материалов снабженцу все чертежи перелопачивать прийдется?
Чтобы на эту тему больше не болела голова, предлагаю выделить место в атрибутах и для позиции, и для номера элемента. Так будет на все случаи жизни.
К стати надо не в программу вводить буквы, а читать значение в этом атрибуте и соединять с ним цифру из проги.
Атрибут в блоке лежит скажем со значением "Стойка-" Чел. копирует этот блок туда, сюда, а прога все просчитав прибавляет к Стойка- цыфру 5 (к примеру) Получается Стойка-5.
Так какие хочешь обозначения писать можно. И вот тогда, меняя имя блока можно нумеровать в пределах одной группы.
Для длинномеров это не подойдет. Одна группа - труба ППУ ДУ-57, другая группа - Труба ППУ ДУ-159, позиции в спецификации не просто разные, в каждой группе еще и длины разные, а это значит, что в следующей группе первым номером должен стоять следующий после последнего в предидущей группе. На чертеже не укажешь в кружочке "Труба ППУ ДУ-57-номер позиции". Если оставить одни цифры например: 159-22 где 159 это Труба ППУ ДУ-159, а 22 это номер позиции, то 159-22 рядом с элементом никто с набегу понять не сможет. Тем более, что 159 может быть безусловная отметка поверхности земли и вся геоподоснова может ими быть испещрена.

Надо использовать Tolerance.

Так в принципе что-то вырисовывается, Берем и выравниваем длины всем блокам, какие нужно подравнять. Затем, выбираем все, которые надо нумеровать и позиционировать, в смысле присваивать номер позиции. Берем первое имя, анализируем массив, позиционируем и нумеруем, записываем последние значения позиции и номера, берем следующее имя и т.д.

Сообщение отредактировал Supermax - 21.9.2007, 15:11
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Гость_Supermax_*
сообщение 22.9.2007, 12:17
Сообщение #265





Guest Forum






Kpblc, как здоровье? Ты что подхватил? Тебе болеть нельзя! Ты Родине нужен!
Павлов когда умирал, он заставил своих учеников стоять над ним и записывать то, что он им говорит. А он им говорил, то что с ним в данный момент происходило. Они плакали, но писали. Не помню, на чем закончилась эта экзекуция, но про то, что ноги у него перестали чувствоваться он им сообщить успел.
Kpblc, можно ли программно переименовать один конкретный блок? Вот их у меня штук сто, а мне надо один изменить, тобишь создать новый с таким же именем и местоположением и заменить им старый. Понятно, что если задавать уже имеещееся имя, прога должна ругаться, но в принципе, ты с такой задачей когда-нибудь сталкивался?
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
mmax
сообщение 22.9.2007, 12:24
Сообщение #266





Группа: Участники форума
Сообщений: 51
Регистрация: 18.6.2007
Из: Череповец
Пользователь №: 9568



если не поможет vla-put-name или еще какойнибудь vla-put*, то остается только вычистить его из документа и вставить новый з новым именем.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Гость_Supermax_*
сообщение 22.9.2007, 12:35
Сообщение #267





Guest Forum






Ты представляешь, что такое "вставить"? В нем сотни две элементов поставленные на элементы предидущего блока, который потом выключается, а эти элементы объединяются в новый блок, потом он копируется и вот доходит до такого места, где он уже чуть-чуть не катит. Если бы его переименовать как-то, я бы его редактором открыл и детальку подвинул, а так, надо все кроме него выключать, взрывать, потом все включать, а это ого-го сколько включется. Мне столько включать не надо, потому, что может слететь. Даже если я все включу, потом выключать опять прийдется.
Не, надо ничего трогать. Надо поменять блоку имя. Но как?

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

Сообщение отредактировал Supermax - 22.9.2007, 12:32
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
mmax
сообщение 22.9.2007, 12:42
Сообщение #268





Группа: Участники форума
Сообщений: 51
Регистрация: 18.6.2007
Из: Череповец
Пользователь №: 9568



Вот все работает и не надо ничего чистить.
Код
(vl-load-com)
(setq blockref (vlax-ename->vla-object (car(entsel "\nSelect Block"))))

(setq bloks (vla-get-blocks (vla-get-activedocument(vlax-get-acad-object))))

(setq block (vla-item bloks (vla-get-name blockref)))

(vla-put-name block "MyName")


соответственно переименовываются и все вставленные в модель и листы
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Гость_Supermax_*
сообщение 22.9.2007, 13:05
Сообщение #269





Guest Forum






Не-е брателло, так не пойдет. Так он всем вхождениям меняет имя, так я и через rename сделаю.
Мне надо конкретное 100-ое вхождение старого блока сделать первым вхождением нового.
Говорю же надо описание блока копировать.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Гость_Supermax_*
сообщение 22.9.2007, 13:52
Сообщение #270





Guest Forum






Mmax, ты не представляешь как я это решил!
Я скопировал в буфер блок, открыл новый файл, вставил туда блок с оригинальными параметрами точки вставки (последняя строчка), переименовал блок, опять скопировал в буфер, вернулся в старый файл, там грохнул существующий и вставил из буфера (опять с оригинальными точками) новый.
Вуаля!

Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
kpblc
сообщение 22.9.2007, 14:02
Сообщение #271


CAD Developer


Группа: Участники форума
Сообщений: 409
Регистрация: 6.2.2006
Из: C.-Петербург, Россия
Пользователь №: 2062



А если попробовать так:
Код
(defun test (exist new / _kpblc-conv-vla-to-list adoc res pos)
           ;|
*    Замена вхождения одного блока на другой. Слои должны быть разморожены и
* разблокированы.
*    Параметры вызова:
    exist    указатель (ename или vla) на вхождение заменяемого блока
    new    имя нового блока.
|;

  (defun _kpblc-conv-vla-to-list (value / res)
                                ;|
*    Преобразовывает vlax-variant или vlax-safearray в список.
|;
    (cond
      ((= (type value) 'variant)
       (_kpblc-conv-vla-to-list (vlax-variant-value value))
       )
      ((= (type value) 'safearray)
       (if (>= (vlax-safearray-get-u-bound value 1) 0)
         (vlax-safearray->list value)
         );_ end of if
       )
      (t value)
      );_ end of cond
    );_ end of defun

  (vl-load-com)
  (setq adoc (vla-get-activedocument (vlax-get-acad-object)))
  (if
    (and (setq
           exist (cond ((= (type exist) 'ename) (vlax-ename->vla-object exist))
                       ((= (type exist) 'vla-object) exist)
                       (t nil)
                       );_ end of cond
           );_ end of setq
         (not (vl-catch-all-error-p
                (vl-catch-all-apply
                  '(lambda () (setq new (vla-item (vla-get-blocks adoc) new)))
                  );_ end of vl-catch-all-apply
                );_ end of vl-catch-all-error-p
              );_ end of not
         (not (equal (vla-get-islayout new) :vlax-true))
         );_ end of and
     (progn
       (setq res (vla-insertblock
                   (vla-objectidtoobject adoc (vla-get-ownerid exist))
                   (vla-get-insertionpoint exist)
                   (vla-get-name new)
                   (vla-get-xscalefactor exist)
                   (vla-get-yscalefactor exist)
                   (vla-get-zscalefactor exist)
                   (vla-get-rotation exist)
                   );_ end of vla-insertblock
             );_ end of setq
       (foreach item '("normal"                "xeffectivescalefactor"
                       "yeffectivescalefactor" "zeffectivescalefactor"
                       "layer"                 "color"
                       "lineweight"            "linetype"
                       )
         (vl-catch-all-apply
           '(lambda ()
              (vlax-put-property res item (vlax-get-property exist item))
              );_ end of lambda
           );_ end of vl-catch-all-apply
         );_ end of foreach
       (if (and (= (vla-get-isdynamicblock exist) :vlax-true)
                (= (vla-get-isdynamicblock res) :vlax-true)
                );_ end of and
         (foreach prop_exist
                  (vl-remove-if
                    '(lambda (x)
                       (= (strcase (vla-get-propertyname x)) "ORIGIN")
                       );_ end of lambda
                    (_kpblc-conv-vla-to-list
                      (vla-getdynamicblockproperties exist)
                      );_ end of _kpblc-conv-vla-to-list
                    );_ end of vl-remove-if
           (foreach prop_new
                    (vl-remove-if
                      '(lambda (x)
                         (= (strcase (vla-get-propertyname x)) "ORIGIN")
                         );_ end of lambda
                      (_kpblc-conv-vla-to-list
                        (vla-getdynamicblockproperties res)
                        );_ end of _kpblc-conv-vla-to-list
                      );_ end of vl-remove-if
             (if (= (vla-get-propertyname prop_new)
                    (vla-get-propertyname prop_exist)
                    );_ end of =
               (vl-catch-all-apply
                 '(lambda ()
                    (vla-put-value prop_new (vla-get-value prop_exist))
                    );_ end of lambda
                 );_ end of vl-catch-all-apply
               );_ end of if
             );_ end of foreach
           );_ end of foreach
         );_ end of if
       (vla-erase exist)
       );_ end of progn
     );_ end of if
  );_ end of defun

Никаких проверок, все "на коленке".
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Гость_Supermax_*
сообщение 22.9.2007, 14:11
Сообщение #272





Guest Forum






О! Какие люди!!! Выздоровел?
Kpblc, у тебя на коленке мазолей еще нет? Ты смотри, что нибудь подкладывай.
Я конечно испытаю, но я сейчас в живой модели размером с город. Испытывать на ней страшновато однако.


Kpblc, entsel вставь куда нибудь.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
kpblc
сообщение 22.9.2007, 14:12
Сообщение #273


CAD Developer


Группа: Участники форума
Сообщений: 409
Регистрация: 6.2.2006
Из: C.-Петербург, Россия
Пользователь №: 2062



Не, не выздоровел sad.gif
Конечно, на боевой не надо. Потому что я проверял, скажем так, в тепличных условиях. Код старается заменить полностью блок, с исходной точкой вставки, нормалью и коэффициентами; слой, тип, вес и цвет линии копируются. По ходу пытается дин.свойства скопировать.
---
Добавлено:
Для проверки попробуй так:
Код
(test (car (entsel "\nExist")) (vla-get-EffectiveName (vlax-ename->vla-object(car(entsel "\nNew : ")))))

Сначала клик на заменяемый блок, потом - на вставляемый на его место

Сообщение отредактировал kpblc - 22.9.2007, 14:13
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения

20 страниц V  « < 8 9 10 11 12 > » 
Добавить ответ в эту темуОткрыть тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

Реклама
ООО «Арктика групп» ИНН: 7713634274




Реклама: ООО «СибСтронг» | ИНН 6670013662 | ERID: 2VtzqvWgxEU

ООО «УНИСПЛИТ» ИНН: 6453155081 erid:2VtzqvybpdW

Реклама: ООО «СЛ-ЛАЗЕР» ИНН 7727447267 | erid: 2VtzquvhFWx
Последние сообщения Форума






RSS Текстовая версия Сейчас: 5.8.2025, 13:22
Политика ООО ИИП «АВОК-ПРЕСС» в отношении обработки персональных данных