Как по данным автоматом построить такую схемку ?
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

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

Как по данным автоматом построить такую схемку ?

Ответ
Поиск в этой теме
Непрочитано 06.05.2008, 20:18 #1
Как по данным автоматом построить такую схемку ?
bdfy
 
Регистрация: 30.04.2005
Сообщений: 141

Есть ряд данных в екселе.
-0.906 1.539 4.106 6.805 9.646
4.408 6.853 9.420 12.119 14.960
в верхнем ряду - нижняя граница, в нижнем ряду - верхняя граница диапазона. итого пять областей. надо их построить на одной оси. заштриховав. и границы подписав.
примерный пример во вложении (на три зоны правда). высота прямоугольников значения не играет.
в екселе построить ничего подобного нельзя вот думаю что использовать. Насколько сложно это сделать в автокаде ? лисп пример похожий может найдется ?

Миниатюры
Нажмите на изображение для увеличения
Название: post.jpg
Просмотров: 203
Размер:	38.5 Кб
ID:	6148  

Просмотров: 2839
 
Непрочитано 06.05.2008, 22:03
#2
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


Код:
[Выделить все]
(defun reg ( / sht obj lst n hi stlb sz size)
(setq n 0
stlb 5 ; Количество столбцов
size 0.1; размер штриховки
hi 5 ; высота области - параметры можно менять
sz 1; расстояния между размерами
)
(repeat (* stlb 2) (setq lst (append lst (list (getreal "Вводите данные построчно ")))))
(repeat stlb (command "_rectang" "_none" (list (nth n lst) 0) "_none" (list (nth (+ stlb n) lst) hi))
(command "_-hatch" "_p" "ansi31" size (* 45 (rem n 8)) "_s" "_last" "" "")
(entmod (subst (cons 62 (1+ (rem n 5))) (assoc 8 (entget (entlast))) (entget (entlast))))
(command "_dimlinear" "_none" (list (nth n lst) hi) "_none" (list (nth (+ stlb n) lst) hi) "_h"
	"_none" (list (nth n lst) (+ hi (* sz (1+ n)))))
(setq n (1+ n))
)
);end of defun
Береш данные из экселя в буфер обмена, в ком строке автокада пишешь "(reg) " и вставку.
__________________
Когда в руках молоток все вокруг кажется гвоздями.

Последний раз редактировалось Дима_, 09.05.2008 в 17:05.
Дима_ вне форума  
 
Автор темы   Непрочитано 06.05.2008, 22:40
#3
bdfy


 
Регистрация: 30.04.2005
Сообщений: 141


не работает
Цитата:
Command: _appload diplom1.lsp successfully loaded.
Command: reg
REGION
Select objects: *Cancel*
None found.
Command: _pasteclip
Specify insertion point:
и вставляется просто из буфера таблица екселевская
пробовал имя команды поменять и перегрузить лисп- вообще unknown команда. автокад 2006 лисп загружал как обычно..
bdfy вне форума  
 
Непрочитано 07.05.2008, 00:24
#4
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


Вводить надо "(reg)" а не "reg", и когда буфер вставляешь проследи чтоб курсор в командной строке был.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 07.05.2008, 01:23
#5
bdfy


 
Регистрация: 30.04.2005
Сообщений: 141


спасибо. здорово. что-то похожее. только штриховку как разную для всех (или хотя бы 4 рядом находящихся) разную выставить ? в идеале еще и разного цвета. иначе разобрать зоны сложно
bdfy вне форума  
 
Непрочитано 07.05.2008, 12:55
#6
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


По просьбам трудящихся модернизировал в 2 посте.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 08.05.2008, 00:32
#7
bdfy


 
Регистрация: 30.04.2005
Сообщений: 141


Цитата:
По просьбам трудящихся модернизировал в 2 посте.
спасибо конечно, но трудящиеся еще не счастливы
такую цветную штриховку невозможно различить. зон наложения не видно как минимум (т.е прозрачны зоны должны быть, просвечивать друг через друга) лучше всего было бы иметь станд. косую как в первом варианте, просто повернутую на 45 град. для каждой зоны.
эхъ, и крайние точки зон бы еще указать на рисунке...
bdfy вне форума  
 
Непрочитано 08.05.2008, 08:26
#8
Кулик Алексей aka kpblc
Moderator

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


Прозрачной заливки в AutoCAD, по-моему, не существует. Это не Corel.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 08.05.2008, 11:29
#9
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


штриховки можешь сам поставить любые 3 строка кода
sht (list "ansi31" "ansi38" "brick" "cross" "flex"); варианты штриховок
то, что в кавычках они и есть - подстваь какие нравяться, а что значит крайние точки зон указать - это мне к сожалению не догадаться - пример давай.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 09.05.2008, 04:04
#10
bdfy


 
Регистрация: 30.04.2005
Сообщений: 141


Цитата:
а что значит крайние точки зон указать - это мне к сожалению не догадаться - пример давай.
значения из ряда данных показать на схеме надо. чтоб помещались всегда повернуть придется. как на рисунке в общем примерно.
Цитата:
sht (list "ansi31" "ansi38" "brick" "cross" "flex"); варианты штриховок
лучшая штриховка это ведь просто сплошные линии.а это ansi31 просто с разными углами. всякая экзотики ввиде бриков или крестиков плохо различима визуально особенно при чернобелой печати
Миниатюры
Нажмите на изображение для увеличения
Название: cad.jpg
Просмотров: 94
Размер:	38.5 Кб
ID:	6251  
bdfy вне форума  
 
Непрочитано 09.05.2008, 16:52
#11
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


Ух взялся так взялся, подправил в существующим посте - размеры ставит в текущем размерном стиле - подпровляей его (размерный стиль) на свое усмотрение.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 10.05.2008, 13:45
#12
bdfy


 
Регистрация: 30.04.2005
Сообщений: 141


Цитата:
Ух взялся так взялся
спасибо, но к сожалению ошибься я. не тот скриншот закинул в сообщение проставлять надо границы зон.

меня вот еще что всегда интересовало... вызвать лисп из внешнего приложения (к примеру из скрипта Visual Basic ) можно ли теоретически ? т.е связь с екселем на каком уровне в автокаде ? как в визио ведь нельзя напрямую ячейки екселевской таблицы считать ?
или может можно из ком. строки (читай из шела через VB тот же) сразу запустить лисп с заданными параметрами ?
Миниатюры
Нажмите на изображение для увеличения
Название: cad1.jpg
Просмотров: 89
Размер:	23.3 Кб
ID:	6281  
bdfy вне форума  
 
Непрочитано 11.05.2008, 00:08
#13
Кулик Алексей aka kpblc
Moderator

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


Все указывает на использование либо системных переменных USER*, либо реестра, либо класса VLAX.CLS (только его сейчас лично мне найти не удалось). Еще вариант - идти через CreateObject("VL") или что-то наподобие того (вроде на caduser.ru был код с этими кусками). Также можно посмотреть:
http://www.theswamp.org/index.php?topic=20519.0;all
http://autolisp-exchange.com/forum/showthread.php?t=63
http://mfgcommunity.autodesk.com/dis...geID%3D4824521
Хотя, если честно, лично я не очень понимаю необходимость подобного шага...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 11.05.2008, 01:25
#14
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


Держи - надеюсь последний, по поводу VB - не берусь - я там ни в зуб ногой
Код:
[Выделить все]
(defun reg ( / sht obj lst n hi stlb size)
(setq n 0
stlb 5 ; Количество столбцов
size 0.1; размер штриховки
hi 5 ; высота области - параметры можно менять
)
(repeat (* stlb 2) (setq lst (append lst (list (getreal "Вводите данные построчно ")))))
(repeat stlb (command "_rectang" "_none" (list (nth n lst) 0) "_none" (list (nth (+ stlb n) lst) hi))
(command "_-hatch" "_p" "ansi31" size (* 45 (rem n 8)) "_s" "_last" "" "")
(entmod (subst (cons 62 (1+ (rem n 5))) (assoc 8 (entget (entlast))) (entget (entlast))))
(command "_dimordinate" "_none" (list (nth n lst) 0) "_x" "_none" (list (nth n lst) (- 0 (/ hi 5))))
(command "_dimordinate" "_none" (list (nth (+ n stlb) lst) 0) "_x" "_none" (list (nth (+ n stlb) lst) (- 0 (/ hi 5))))
(setq n (1+ n))
)
);end of defun
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 11.05.2008, 02:09
#15
bdfy


 
Регистрация: 30.04.2005
Сообщений: 141


Цитата:
Держи - надеюсь последний
ага. спасибо огромное фактически идеальное решение.
Цитата:
Хотя, если честно, лично я не очень понимаю необходимость подобного шага...
оно не только и не столько для этой задачи нужно. Есть другие. К примеру: есть схемка в автокаде. есть расчет в екселе. данные этого самого расчета хорошо бы нанести на схемку.
лучшее решение что придумал - связанные ячейки из екселя кидать на схему в визио. но при печати таким образом рамка (границы ячейки) вокруг вставленных чисел видна. не совсем эстетично. вот думаю какие теоретические решения еще есть...
bdfy вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Как по данным автоматом построить такую схемку ?

Реклама i


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как построить среднюю линию между непараллельными? vigold AutoCAD 54 14.09.2024 04:54
Как правильно построить 3д гайку? skalder AutoCAD 22 24.01.2008 19:24
Как сделать, чтобы блок вставлялся автоматом Baron Программирование 11 01.01.2004 20:01
Подскажите как построить кривую с помощью команды SPLiNE, к boban Программирование 1 02.11.2003 19:58