Wiki ЖБК

Материалы для проектирования железобетонных конструкций

Инструменты пользователя

Инструменты сайта


скрипт_3dface

Скрипт для "выдавливания" 3dFace из отрезков

Автор: Dmitry Rudenko

C помощью этого скрипта (VBA) можно подготовить в nanoCAD план стен для последующего импорта в препроцессоры расчётных программ. Скрипт преобразует отрезки в 3dFace, которые воспринимаются препроцессорами, как оболочки.

Исходные объекты (отрезки):

Объекты после использования скрипта (3dFace):

Модель после импорта dxf в программе Форум:

3dFace-frm-line.vbs
Dim ms
Set ms = ThisDrawing.ModelSpace
Dim ut
Set ut = ThisDrawing.Utility
 
ut.Prompt "C помощью этого скрипта (VBA) можно подготовить в nanoCAD план стен для последующего импорта программой Форум. Скрипт преобразует отрезки в 3dFace, которые воспринимаются программой Форум, как оболочки."
 
Dim myObj 
Dim solid
Dim ppt0, ppt1, pt0(2), pt1(2), pt2(2), pt3(2) 
 
Dim check2
check2 = 0
 
Dim sSet, cnt
set sSet = ThisDrawing.ActiveSelectionSet
sSet.SelectOnScreen
cnt = sSet.Count
 
Dim height
height = ut.GetInteger("Введите высоту стен: ")
 
Dim i
for i=0 to cnt-1
	set myObj = sSet.Item(i)
	if (myObj.ObjectName = "AcDbLine") then
		ppt0 = ut.CreateSafeArrayFromVector(myObj.StartPoint)
        ppt1 = ut.CreateSafeArrayFromVector(myObj.EndPoint)
 
		pt0(0) = ppt0(0)
		pt0(1) = ppt0(1)
		pt0(2) = ppt0(2)
		pt1(0) = ppt1(0)
		pt1(1) = ppt1(1)
		pt1(2) = ppt1(2)
		pt2(0) = ppt0(0)
		pt2(1) = ppt0(1)
		pt2(2) = ppt0(2) + height
		pt3(0) = ppt1(0)
		pt3(1) = ppt1(1)
		pt3(2) = ppt1(2) + height
 
		set solid = ms.Add3dFace(pt0,pt1,pt3,pt2)
		solid.layer = myObj.layer
		myObj.delete
	else 
		check2 = 1 
	end if
next
ut.Prompt "Готово, проверяй!"
if check2 = 1 then
	ut.Prompt " "
	ut.Prompt "Внимание! В набор вошли не только отрезки"
end if
sSet.Clear

Полезные ссылки

Обсуждение

Vtrk, 2013-04-03 01:13
А как такое реализовать в Автокаде?
Dmitry Rudenko, 2013-04-04 21:58
Теоретически должно и в акаде работать. Или поставить нанокад - он бесплатный
S77, 2013-04-05 16:31
автокадом пробую загрузить - он просит файл формата *.dvb. Подсунул этот - он сказал "неправильный формат файла"...
s77, 2013-04-05 17:21
Взял вот этот скрипт (позволяющий запускать VBS-скрипты):

http://forum.dwg.ru/showthread.php?t=16998

http://dwg.ru/pub/9 - вот тут почитал, как его использовать.



Пробую

(dwgru-wscript-run "./3dFace-frm-line.vbs" "1" "true" ""), говорит, что ему нужен объект "this drawing". (http://linkme.ufanet.ru/images/e3f3ab1f6b86e44d15c3b715080fe4a9.png)





Пробую

(dwgru-wscript-run "./3dFace-frm-line.vbs" "1" "true" "с"), открывается окно DOS'овской консоли на секунду, закрывается, а в консоли автокада остаются два нуля.



ЧЯДНТ? Неужели нужно учить LISP и VB? Не хочу((
S77, 2013-04-05 18:15
К чертям скрипты. Вот вариант, работающий в автокаде:
0) _MESHOPTIONS. Выставляем степень сглаживания 0.

1) Выделяем нужные отрезки.
2) "ВЫДАВИТЬ". В русском автокаде работает команда "ВЫД".
3) Мышью направляем, в какую сторону выдавливать и задаем высоту (клавиатурой). Получаем кучу Поверхностей (Surface)
4) Выбираем их все (быстрым выбором или "Выбрать подобные")
5) MESHSMOOTH - все Surface становятся сетями (Mesh)
6) Выбираем все сети и.. взрываем их!
kaio, 2013-06-28 17:05
Так треугольники получаются а не прямоугольники... ка кс этим бороться. под акад скрипт воткнуть не удалось...
Dmitry Rudenko, 2013-06-28 17:39
http://forum.dwg.ru/showthread.php?p=1113908
Владимир, 2013-06-28 23:57
Вариант на лиспе

http://forum.dwg.ru/showpost.php?p=1114003&postcount=9
Dmitry Rudenko, 2013-06-29 12:31
Спасибо!
S77, 2014-09-23 17:39
Я ж написал - сначала в _MESHOPTIONS или в СЕТЬНАСТР нужно поставить степень сглаживания = 0.
I am, 2015-04-02 17:16
Есть вообще простой и сердитый вариант (если не планируется готовить полную схему в CADe, а лишь только сграбить геометрию и собрать её уже в SCADe): просто установить у нужных отрезков свойство "высота 3D" на нужную высоту - при импорте SCAD такие отрезки преобразует в оболочки.
kaio, 2015-04-02 17:20
"высота 3D" - где это такой параметр у линии/полилинии? какой английский аналог.. или может скрин.. что-то я не нашел такого...
I am, 2015-04-02 17:29
"высота 3D" - это в NanoCADe

В Autodesk DWG TrueView называется Thickness
kaio, 2015-04-02 17:30
Ага... спасибо... нашел
Ваш комментарий:
  ____      __  ____
 / __ \ __ / / /_  /
/ /_/ // // /   / /_
\___\_\\___/   /___/
 
PDF Export Download this page as a pdf Text Export Download this page as a plain text
скрипт_3dface.txt · Последнее изменение: 2013-11-17 18:40 — swell

Инструменты страницы