Как просмотреть имена всех блоков файла .dwg в ​​консоли AutoCAD CORE?

я получу пользовательский блок в файле .dwg из списка блоков, которые я буду программно анализировать в Java.


person user3336544    schedule 10.08.2015    source источник
comment
Вы пробовали что-нибудь? Stack Overflow не будет писать вашу программу за вас.   -  person nkorth    schedule 10.08.2015
comment
я бы предположил, что ответ будет похож на однострочную команду... например, LISTALLBLOCK или GETALLBLOCKNAME... спасибо, что указали, что StackOverflow не помогает мне писать код...   -  person user3336544    schedule 10.08.2015
comment
Чтобы получить больше шансов получить ответ на свой вопрос, по крайней мере добавьте к своему вопросу что-то вроде I looked at the documentation [link to documentation here] and couldn't find a way to do this.   -  person nkorth    schedule 10.08.2015
comment
Ява? Нет, если вы не вызываете экземпляр AutoCAD через COM, но я не думаю, что основная консоль работает с COM, и я никогда не собираюсь это выяснять. С# — да, Лисп — да. но ответ @Maxence в этом случае самый простой.   -  person CAD bloke    schedule 21.08.2015


Ответы (2)


Вы можете использовать команду INSERT с опцией ?

cd C:\Program Files\Autodesk\AutoCAD 2016
accoreconsole.exe /i "Sample\Database Connectivity\Floor Plan Sample.dwg"
Command: _INSERT
Enter block name or [?]: ?

Enter block(s) to list <*>:

Defined blocks.
  "CHAIR7"
  "COMPUTER"
  "DESK2"
  "DESK3"
  "DOOR"
  "DR-36"
  "DR-69P"
  "DR-72P"
  "FC15X27A"
  "FC42X18D"
  "FNPHONE"
  "IBMAT"
  "KEYBOARD"
  "NCL-HL"
  "RECTANG"
  "RMNUM"
  "SOFA2"

User     Unnamed
Blocks   Blocks
   17        0
person Maxence    schedule 11.08.2015

Я не знаком с Core Console, но для вывода всего блока в файл DWG вам нужно использовать LISPs. Что-то вроде axBlock из jtbworld. Вы также можете издеваться над кодом LISP и вызывать его через SCRIPT.


Редактировать:

Скопируйте и вставьте следующий код в Notepad и сохраните его как axBlock.lsp в корне вашего диска C (например):

(defun c:axblocks (/ b bn tl)
  (vlax-for b (vla-get-blocks
                (vla-get-ActiveDocument (vlax-get-acad-object))
              )
    (if (= (vla-get-islayout b) :vlax-false)
      (setq tl (cons (vla-get-name b) tl))
    )
  )
  (reverse tl)
)

Я только что немного подправил код jtbworld, чтобы вам было проще.

Теперь у вас есть готовый код LISP, и вам нужно только загрузить его в AutoCAD. У вас есть несколько вариантов для этого:

  1. Используйте команду APPLOAD в AutoCAD и найдите axBlock.lsp, который вы только что создали.
  2. Перетащите axBlock.lsp в окно AutoCAD.
  3. Вызовите axBlock.lsp через файл сценария. А скрипты на самом деле не что иное, как простой текстовый файл с расширением *.scr. Для этого вам просто нужно, чтобы эта строка кода находилась в вашем файле сценария:

    (load "C:\\axBlock.lsp")

После выполнения любого из трех вышеперечисленных методов, если вы наберете axBlock в AutoCAD и нажмете Enter, вы увидите список существующих блоков.

Более того, если вы следовали подходу № 3 из приведенного выше списка, вы можете сделать ярлык и вызвать axBlock в файле скрипта, т.е. вы загружаете и вызываете функцию одним нажатием. Если вы хотите это сделать, просто добавьте axBlock во вторую строку кода вашего скрипта. Обратите внимание на дополнительные SPACE после axBlock

person Bababarghi    schedule 11.08.2015
comment
AutoCAD не имеет большой функциональности в CoreConsole ... однако не могли бы вы указать мне правильное направление, как запускать сценарии .lsp в файле SCRIPT ?? - person user3336544; 11.08.2015
comment
@user3336544 user3336544 прочитайте мой отредактированный ответ. Я добавил к нему больше описания. - person Bababarghi; 11.08.2015
comment
Я сделал все на номере 3, но консоль просто перепечатывает каждую строку и завершает работу... этот метод наиболее полезен для меня, но я не могу заставить его работать. - person user3336544; 12.08.2015
comment
@user3336544 user3336544 Мне нужно увидеть скриншот, чтобы иметь возможность помочь вам в дальнейшем. - person Bababarghi; 12.08.2015
comment
оказывается, что Visual Lisps не работает в Core Console… и лучшим способом было бы вызвать скрипт, который вызывает подпрограмму lisp на acad.exe… пример: acad.exe C:\‹pathing.. .›\ my_autocad_file.dwg /b call_attout_routine.scr - person user3336544; 21.08.2015