Форум программистов, компьютерный форум, киберфорум
AutoLISP
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
263 / 215 / 53
Регистрация: 01.08.2016
Сообщений: 829
1

Скрипт по фильтрации блоков по их видимости

08.09.2022, 09:32. Показов 1216. Ответов 0

Author24 — интернет-сервис помощи студентам
Добрый день всем. Я в AutoLISP практически 0. Нашел в интернете скрипт для выбора блоков в на чертеже в автокаде. Им можно фильтровать блоки по состоянию их видимости. Однако после загрузки выскакивает ошибка что лишние входные скобки и вместо кириллицы кракозябры. Может кто помочь что не так в этом скрипте?
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
;;;From http://www.theswamp.org/index.php?topic=23944.0
;;; Thread  Dynamic block filter
;;; SSD R2.6 (gile) 14/07/2008 (last revision 19/12/2010)
;;; Select dynamic blocks according to dynamic properties values
;;; Using:
;;; To make a selection, enter ssd at command prompt or,
;;; within a modification command, type (ssd) at "Select objects: " prompt
;;; Select a source dynamic block
;;; Choose properties values to filter in the dialog box
;;; (an empty tile or an asterisk (*) means "all vlaue")
 
(defun ssd (/ *error* ToString DynBlkPropValue dz ss ent blk name pop fuzz ret sel res)
 
  (vl-load-com)
  (or *acdoc* (setq *acdoc* (vla-get-ActiveDocument (vlax-get-acad-object))));;;Add VVA 2010-01-11
  (defun *error* (msg)
    (if (/= msg "Function cancelled")
      (princ (strcat "Error: " msg))
    )
    (setvar 'dimzin dz)
    (princ)
  )
 
  (defun ToString (v u)
    (cond
      ((= 0 u) (vl-princ-to-string v))
      ((= 1 u)(angtos v (getvar 'aunits) 16))  ;;;Correct VVA 2010-01-11
      ((if (< (abs v) 1e-6)
     (rtos v 1 6)
     (rtos v (getvar 'lunits) 12)
       )
      )
    )
  )
 
  ;; DynBlkPropValue
  ;; Dialog box to choose dynamic properties values
  ;;
  ;; Argument : the dynamic properties list (vla-object list)
 
  (defun DynBlkPropValue (lst / tmp file pn unt av dcl_id val)
    (setq tmp  (vl-filename-mktemp "Tmp.dcl")
      file (open tmp "w")
    )
    (write-line
      (strcat
    "DynBlkProps:dialog{label=\"Dynamic block filter\";"
    ":text{label=\"Block name: \""
    (vl-prin1-to-string name)
    ";}spacer;:boxed_column{label=\"Dynamic properties\";"
      )
      file
    )
    (foreach p lst
      (setq pn  (vla-get-PropertyName p)
        unt (vla-get-UnitsType p)
      )
      (cond
    ((setq av (vlax-get p 'AllowedValues))
     (setq av  (mapcar '(lambda (x) (ToString x unt)) av)
           pop (cons (vl-list* pn "*" av) pop)
     )
     (write-line
       (strcat
         ":popup_list{label="
         (vl-prin1-to-string pn)
         ";key="
         (vl-prin1-to-string pn)
         ";value="
         (itoa (1+ (vl-position (ToString (vlax-get p 'Value) unt) av)))
         ";edit_width=25;allow_accept=true;}"
       )
       file
     )
    )
    ((/= pn "Origin")
     (setq fuzz (cons pn fuzz))
     (write-line
       (strcat
         ":row{:edit_box{label="
         (vl-prin1-to-string pn)
         ";key="
         (vl-prin1-to-string pn)
         ";value="
         (vl-prin1-to-string (ToString (vlax-get p 'Value) unt))
         ";edit_width=18;allow_accept=true;}"
         ":edit_box{label=\"Fuzz\";key="
         (vl-prin1-to-string (strcat pn "_fuzz"))
         ";value=\"1e-12\";edit_width=6;allow_accept=true;}}"
       )
       file
     )
    )
      )
    )
    (write-line
      (strcat
    "}spacer;:radio_row{key=\"selset\";"
    ":radio_button{label=\"All drawing\";key=\"all\";value=\"1\";}"
    ":radio_button{label=\"Selection\";key=\"sel\";}}"
    "spacer;ok_cancel;}"
      )
      file
    )
    (close file)
    (setq dcl_id (load_dialog tmp))
    (if (not (new_dialog "DynBlkProps" dcl_id))
      (exit)
    )
    (foreach p pop
      (start_list (car p))
      (mapcar 'add_list (cdr p))
      (end_list)
    )
    (action_tile
      "accept"
      "(foreach p (mapcar 'vla-get-PropertyName lst)
      (if (assoc p pop)
      (setq val (nth (atoi (get_tile p)) (cdr (assoc p pop))))
      (setq val (get_tile p)))
      (if (and val (/= val \"\") (/= val \"*\"))
      (setq ret (cons (cons p val) ret))))
      (setq fuzz (mapcar (function (lambda (x)
      (cons x (get_tile (strcat x \"_fuzz\"))))) fuzz))
      (and (not ret) (setq ret T))
      (setq sel (get_tile \"selset\"))
      (done_dialog)"
    )
    (action_tile "cancel" "(setq ret nil)")
    (start_dialog)
    (unload_dialog dcl_id)
    (vl-file-delete tmp)
    ret
  )
 
  ;;----------------------------------------------------;;
 
  (setq dz (getvar 'dimzin))
  (setvar 'dimzin 8)
  (and
    (or
      (and
    (setq ss (cadr (ssgetfirst)))
    (= 1 (sslength ss))
    (setq ent (ssname ss 0))
    (sssetfirst nil nil)
      )
      (and
    (sssetfirst nil nil)
    (setq ent (car (entsel)))
      )
    )
    (setq blk (vlax-ename->vla-object ent))
    (= (vla-get-ObjectName blk) "AcDbBlockReference")
    (= (vla-get-IsDynamicBlock blk) :vlax-true)
    (not (redraw ent 3))
    (setq name (vla-get-EffectiveName blk))
    (or
      (DynBlkPropValue (vlax-invoke blk 'getDynamicBlockProperties))
      (redraw ent 4)
    )
    (not (redraw ent 4))
    (if (= sel "all")
      (ssget "_X"
         (list '(0 . "INSERT") (cons 2 (strcat name ",`*U*")))
      )
      (ssget (list '(0 . "INSERT") (cons 2 (strcat name ",`*U*")))
      )
    )
    (setq res (ssadd))
    (vlax-for b (setq ss (vla-get-ActiveSelectionSet *acdoc*))
      (if
    (and
      (= (vla-get-EffectiveName b) name)
      (or
        (= ret T)
        ((lambda (lst)
           (apply
         '=
         (cons
           T
           (mapcar
             (function
               (lambda (p / n v l u f)
             (setq n (car p)
                   l (assoc n lst)
                   u (vla-get-UnitsType (caddr l))
             )
             (equal (cond
                  ((= 0 u) (cdr p))
                  ((= 1 u) (angtof (cdr p)))
                  (T (distof (cdr p)))
                )
                (if (= u 0)
                  (vl-princ-to-string (cadr l))
                  (cadr l)
                )
                (if (and (setq f (cdr (assoc n fuzz)))
                     (numberp (read f))
                    )
                  (atof f)
                  1e-12
                )
             )
               )
             )
             ret
           )
         )
           )
         )
          (mapcar
        (function
          (lambda (p / n v)
            (list
              (setq n (vla-get-PropertyName p))
              (vlax-get p 'Value)
              p
            )
          )
        )
        (vlax-invoke b 'getDynamicBlockProperties)
          )
        )
      )
    )
     (ssadd (vlax-vla-object->ename b) res)
      )
    )
    (vla-delete ss)
  )
  (setvar 'dimzin dz)
  res
)
 
(defun c:ssd ()
  (sssetfirst nil (ssd))
  (princ)
)
Вот данный код
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.09.2022, 09:32
Ответы с готовыми решениями:

Подсчет Блоков и Динамических блоков с учетом visibility (видимости) и сумму длин линий, полилиний по слоям и вывод результатов в Ecxel
Привет всем! После долгих &quot;ручных&quot; подсчетов различных элементов на чертежах назрел вопрос об...

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

Не могу разобраться с изменением видимости блоков ДИВ
Добрый день, Я с JS на ВЫ, в основном из подсмотренного в интернете получалось что-то подправить...

Скрипт фильтрации списка!
Добрый день! Появилась такая проблема! Я не очень хорошо разбираюсь в js! Написал небольшой скрипт...

Скрипт фильтрации данных — сделать автономным
Привет! По ссылке, а также в прикреплении, находится интересный проект, со множеством категорий,...

0
08.09.2022, 09:32
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.09.2022, 09:32
Помогаю со студенческими работами здесь

Скрипт фильтрации данных на Sharepoint foundation.
Господа добрый, прошу помощи. У меня есть Sharepoint foundation + infopath. Infopath запускается...

Нашел в инете скрипт для фильтрации веб трафика но не работает
Добрых времени суток уважаемые форумчане! Нашел в инете скрипт для фильтрации веб трафика но не...

Скрол для блоков , управление видимости блока для одностраничного приложения
Здравствуйте. Мне нужно ограничить скролинг для всего документа и оставив скрол только для...

Создать тень для двух блоков, которые попадают в область видимости, и очистить у двух других.
var block = $(&quot;.cube&quot;); var index_img = 1; var cur = 1; var next = cur + 1; var img = $(&quot;.cube...

Как активировать скрипт, при попадании блока в зону видимости?
Всем привет! Товарищи, подскажите, как активировать скрипт, при попадании блока в зону видимости. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Алгоритмы и исполнители
hw_wired 28.01.2025
Введение в алгоритмы В современном мире информационных технологий алгоритмы играют основополагающую роль в решении различных задач и автоматизации процессов. Алгоритм представляет собой точную. . .
Хранение информации
hw_wired 28.01.2025
Введение: Роль систем хранения информации в современном мире В современную эпоху цифровых технологий эффективное хранение информации становится одним из ключевых факторов успешного развития любой. . .
Обработка числовой информации
hw_wired 28.01.2025
Введение в обработку числовой информации В современном мире обработка числовой информации стала неотъемлемой частью как профессиональной деятельности, так и повседневной жизни. Электронные таблицы. . .
Мультимедиа
hw_wired 28.01.2025
Введение в мультимедийные технологии В современном мире мультимедийные технологии стали неотъемлемой частью нашей жизни, проникнув во все сферы человеческой деятельности. Термин "мультимедиа". . .
Обработка текстовой информации
hw_wired 28.01.2025
Введение в обработку текстовой информации В современном мире обработка текстовой информации играет фундаментальную роль в различных сферах человеческой деятельности. Текстовые редакторы стали. . .
Обработка графической информации
hw_wired 28.01.2025
Введение в компьютерную графику Компьютерная графика стала неотъемлемой частью современного цифрового мира, пройдя впечатляющий путь развития от простейших черно-белых изображений до сложных. . .
Python в Алгоритмике: Решение задач
hw_wired 28.01.2025
Введение в Python и Алгоритмику В современном мире программирование стало неотъемлемой частью образования и профессионального развития. Python зарекомендовал себя как один из самых популярных и. . .
Компьютер как универсальное устройство для работы с информацией
hw_wired 28.01.2025
Введение в устройство компьютера Компьютер представляет собой универсальное электронное устройство, предназначенное для автоматической обработки информации. В современном мире компьютер стал. . .
Информация и информационные процессы
hw_wired 28.01.2025
Понятие информации и ее виды В современном мире информация является одним из фундаментальных понятий, пронизывающих все сферы человеческой деятельности. Под информацией понимают любые сведения об. . .
Алгоритмика
hw_wired 28.01.2025
Введение: Основы алгоритмики и её роль в информатике В современном мире программирование и алгоритмическое мышление стали неотъемлемой частью образования и профессиональной деятельности. . . .
Информационное моделирование
hw_wired 28.01.2025
Введение в информационное моделирование В современном мире информационное моделирование стало неотъемлемой частью научной, образовательной и профессиональной деятельности. Это мощный инструмент. . .
Объекты и их имена
hw_wired 28.01.2025
Введение: Основы объектного подхода и их роль в информатике В современном мире информационных технологий объектный подход стал фундаментальным принципом организации и обработки информации. Этот. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru