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

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > округление и контроль размеров

округление и контроль размеров

Ответ
Поиск в этой теме
Непрочитано 01.02.2004, 11:21 #1
округление и контроль размеров
vv
 
конструктор
 
Москва
Регистрация: 14.12.2003
Сообщений: 112

Архитекторы наши очень небрежно работают с размерами - или правят руками или строят размеры вроде 5864 и т.п.
В связи с этим - 2 вопроса - при черчении в мм. можно ли установить автоматич.округление до см. И как запретить ручное редактирование размеров?
Просмотров: 15100
 
Непрочитано 01.02.2004, 12:18
#2


 
Сообщений: n/a


Практически общая болезнь архитекторов.
Прикольно когда на простом фасаде здания из утолщенного кирпича (х100 мм) появляются отметки типа +4.567.
Для округления в разделе Primary Units смотри Dim roundoff - величина округления.
Как запретить ручной ввод размеров не знаю. Да и сомневаюсь, что такое необходимо. Если можно запретить, значит можно и разрешить
 
 
Непрочитано 01.02.2004, 13:44
#3
Grinzaid

Архитектор
 
Регистрация: 14.10.2003
Израиль
Сообщений: 365
<phrase 1=


Позвольте израильскому архитектору внести ясность. Я сам сильно страдаю от небрежности сослуживцев и смежников. Методов борьбы сущестмует несколько:

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

Итак:
1. Для исправления самого чертежа необходимо запомнить его (или его часть) как DXF и в опциях (в окне Save Drawing As / DXF Options) выставить decimal places по необходимости. Следует учесть, что округлятся все размеры, вклучая те, которые должнв оставаться нецелыми. Будут и другие побочные эффекты. Так что лучше для этого способа выбрать только самое необходимое.

2. Округление зазмеров. Надо узнать, к какому стилю они принадлежат, зайти в Dimensiom Style Manager / Primary Units и выставить Round off величину округления (кратность).

С ручными дописками бороться так: выбрать все объекты чертежа, зайти в properties, отфильтровать выбор на предмет размеров, зайти в Text / Text ovarride и выставить значение <>

Вот и всё. Удачи в борьбе с архитекторами.
__________________
С уважением,
Влад Гринзайд.
Grinzaid вне форума  
 
Непрочитано 01.02.2004, 17:30
#4
Vova

Engineer
 
Регистрация: 05.09.2003
New-York
Сообщений: 10,288


Наши архитекторы рисуют, в основном, корректно. В противном случае нашей компании пришлось бы нанимать вдвое больше людей-просчитывать каждую цепочку размеров прежде чем, например, установить конец выходящей из перекрытия трубы так, чтобы он попал в середину стены. А при хорошей основе годится Osnap. Чертить с исправленными размерами это правило очень нехорошего тона. К тому-же, эти люди сами себе вредят-при изменениях в чертежах неточности обязятельно вылезут. Надо в жесткой форме, с примерами, напомнить нерадивым чертежникам, что это автокад, и он не терпит неточностей. Тем не менее, получая набор чертежей от архитекторов, я всегда проверяю размеры специальным Лиспом на предмет наличия отредактированных размеров,
;;; CHKDIM.LSP "Check Dimensions" - detects overridden dimensions
;;;
;;; tested with AutoCAD 12/13/14
;;;
;;; Copyright (c) 1997 by Christoph Candido, Vienna
;;; E-Mail: [email protected]
;;;
;;; Permission to use, copy, modify, and distribute this software
;;; for any purpose and without fee is hereby granted, provided
;;; that the above copyright notice appears in all copies and that
;;; both that copyright notice and this permission notice appear in
;;; all supporting documentation.
;;;
;;; THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED
;;; WARRANTY. ALL IMPLIED WARRANTIES OF FITNESS FOR ANY PARTICULAR
;;; PURPOSE AND OF MERCHANTABILITY ARE HEREBY DISCLAIMED.
;;;
;;;------------------------------------------------------------------
;;; Purpose:
;;;
;;; Routine to global check dimension texts.
;;; All dimension texts, which are altered by the user, will
;;; be copied to the layer CHKDIM and viewed separately.
;;;
(defun C:CHKDIM (/ *chkdim_err* oerr osys ss i en ent txt enlist)

(defun *chkdim_err* (s) ; error routine
(command "_.UNDO" "_End")
(sysvar osys)
(setq *error* oerr)
(princ)
)

(setq oerr *error*
*error* *chkdim_err*
osys (sysvar '(("CMDECHO" 0)))
ss (ssget "X" '((0 . "DIMENSION")(8 . "~CHKDIM")))
i 0
)
(if ss
(repeat (sslength ss)
(setq en (ssname ss i)
ent (entget en)
txt (cdr (assoc 1 ent))
i (1+ i)
)
(if (and (/= txt "")
(not (strstr txt "<>"))
)
(setq enlist (cons en enlist))
)
)
)
(if enlist
(progn
(mapcar 'princ (list "\n" (length enlist)
" altered dimension text(s) found ...please wait")
)
(if (null *CHKDIM_LAYLIST*)
(setq *CHKDIM_LAYLIST* (laysave))
)
(if (= 0 (getvar "UNDOCTL"))
(command "_.UNDO" "_All")
)
(command "_.UNDO" "_Control" "_All" "_.UNDO" "_End" "_.UNDO" "_Group")
(setq ss (ssget "x" '((8 . "CHKDIM"))))
(if ss (command "_.ERASE" ss ""))
(setq ss (ssadd))
(mapcar
'(lambda (en / ent)
(setq ent (entget en '("*"))
ent (subst '(8 . "CHKDIM") (assoc 8 ent) ent)
ent (subst
(cons 1 (strcat (cdr (assoc 1 ent)) " [<>]"))
(assoc 1 ent)
ent
)
)
(entmake ent)
(ssadd (entlast) ss)
)
enlist
)
(command "_.DIM" "_UPDATE" ss "" "Exit")
(command "_.LAYER" "_Thaw" "CHKDIM" "_Set" "CHKDIM"
"_Freeze" "~CHKDIM" ""
)
(command "_.ZOOM" "_Extents")
(command "_.UNDO" "_End")
(princ "\nType LRES to restore previous layer settings.")
)
(princ "\nNo altered dimension texts found. ")
)
(sysvar osys)
(setq *error* oerr)
(princ)
)

;;; C:LRES
;;;
;;; (C)1997, Christoph Candido, A-1070 Vienna
;;;
;;; Restores layer settings saved in the global variable
;;; *CHKDIM_LAYLIST*.
;;;
(defun C:LRES (/ *lres_err* osys oerr ss)

(defun *lres_err* (s)
(sysvar osys)
(setq *error* oerr)
(princ)
)

(if *CHKDIM_LAYLIST*
(progn
(setq osys (sysvar '(("CMDECHO" 0)("EXPERT" 1)))
oerr *error*
*error* *lres_err*
)
(setq ss (ssget "x" '((8 . "CHKDIM"))))
(if ss (command "_.ERASE" ss ""))
(layres *CHKDIM_LAYLIST*)
(setq *CHKDIM_LAYLIST* nil)
(sysvar osys)
(setq *error* oerr)
)
(princ "\nNo layer settings to restore.")
)
(princ)
)

;;; STRSTR -- Scans a string for the occurrence of a given substring.
;;;
;;; If neither argument is a string, *ERRORNO* is set to -1
;;; and nil is returned.
;;;
;;; (C) Copyright 1990, 1991 by Autodesk, Inc.
;;;
(defun strstr (_$s1 _$s2 / _$j _$sl _$sl2)
(setq *ERRORNO* nil)
(if (and (= (type _$s1) 'STR)
(= (type _$s2) 'STR)
)
(progn
(setq _$j 0
_$sl (strlen _$s1)
_$sl2 (strlen _$s2)
)
(while (< _$j _$sl)
(if (= (substr _$s1 (setq _$j (1+ _$j)) 1)
(substr _$s2 1 1)
)
(if (= (substr _$s1 _$j _$sl2) _$s2)
(progn
(setq _$s1 (substr _$s1 _$j))
(setq _$j _$sl)
_$s1
)
)
)
)
)
(progn
(setq *ERRORNO* -1)
nil
)
)
)

;;; LAYSAVE
;;;
;;; (C)1997, Christoph Candido, A-1070 Vienna
;;;
;;; Save layer settings, use LAYRES to restore.
;;;
(defun laysave (/ ll lay color name flags)
(setq ll (list (getvar "CLAYER")))
(setq lay (tblnext "layer" T))
(while lay
(setq ll
(cons
(list
"_Color"
(itoa (abs (setq color (cdr (assoc 62 lay)))))
(setq name (cdr (assoc 2 lay)))
"_Ltype"
(cdr (assoc 6 lay))
name
(if (= 1 (logand 1 (setq flags (cdr (assoc 70 lay)))))
"_Freeze"
"_Thaw"
)
name
(if (= 4 (logand 4 flags)) "_Lock" "_Unlock")
name
(if (minusp color) "_OFF" "_ON")
name
)
ll
)
lay (tblnext "LAYER")
)
)
(reverse ll)
)

;;; LAYRES
;;;
;;; (C)1997, Christoph Candido, A-1070 Vienna
;;;
;;; Restore layer settings saved by LAYSAVE.
;;;
(defun layres (ll / clay)
(setq clay (car ll)
ll (cdr ll)
)
(command "_.LAYER" "_Thaw" clay "_Set" clay)
(foreach n ll (apply 'command n))
(command "")
(princ)
)

;;; SYSVAR
;;;
;;; Set and restore system variables.
;;;
(defun sysvar (l)
(mapcar
'(lambda (x / var val vlist)
(setq var (if (listp x) (car x) x)
val (if (listp x) (eval (cadr x)) nil)
vlist (list var (getvar var))
)
(if val (setvar var val))
vlist
)
l
)
)
(princ "\n****************************************")
(princ "\n (c)1997 Christoph Candido, A-1070 Wien")
(princ "\n E-Mail: [email protected]")
(princ "\n****************************************")
(princ "\nCHKDIM ...global check dimension texts. ")
(princ)

Верните архитекторам их чертеж с указанием отредактитованных размеров и служебным письмом-дескать, работать с вашими основами невозможно, или пусть заказчик платит другие деньги за счет нарадивых.
Vova вне форума  
 
Непрочитано 02.02.2004, 00:34
#5
Perezz!!
Moderator

архитектор
 
Регистрация: 21.08.2003
Москва
Сообщений: 3,587


Цитата:
Сообщение от Anonymous
Практически общая болезнь архитекторов.
Ну, это Вы поторопились... У нас, например, этим грешат и конструкторы, проставляя размеры с точностью до 1мм.

А всё дело в том, что никто и слыхом не слыхивал про ГОСТ 28984-91 "Модульная координация размеров в строительстве". В нём, в частности, написано что точность в 1мм, или 1/100 основного модуля, принимается по всем измерениям в пределах до 20мм А это возможно, насколько мне представляется, только в каких-то мелких металлических закладных деталях, когда же такие размеры всплывают на монолите, это наводит на размышления...
Намекните, авось поймут...
Perezz!! вне форума  
 
Непрочитано 02.02.2004, 09:54
#6
Pilot

Проектировщик свиноводство
 
Регистрация: 21.08.2003
Сообщений: 2,268


Вот программка для выявления размеров, проставленных вручную:
Код:
[Выделить все]
;;; c:FDR Разработка Михаила Сорокина.
;;; THIS PROGRAM "AS IS" AND WITH ALL FAULTS.
;;; SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE.
;;; DOES NOT WARRANT THAT THE OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR FREE.
;Доработано Pilot

(defun c:Fdr ( / na n in l en lw )
(setvar "cmdecho" 0)
(if (not (setq na (ssget "x" '((0 . "DIMENSION")))))
   (progn (alert "В чертеже нет размерных примитивов.")(exit)))
(setq n (sslength na)
      in 0
      l 0)
(repeat n
   (setq en (entget (ssname na in)))
   (if (and (/= (cdr (assoc 1 en)) "")
            (not (TinT "<>" (cdr (assoc 1 en)))))
      (progn (setq lw (subst (cons 62 6)(assoc 8 en) en) l (+ 1 l))
             (entmod lw));progn
   );if
   (setq in (1+ in))
);repeat
(if (= l 0)
   (alert "\nНеассоциативные размеры не найдены.")
   (alert (strcat "Найдено неассоциативных размеров - " (rtos l 2 0))));if
(princ));c:Fdr

(defun TinT (t1 t2 / c1 v1);проверить t1 в t2
(if (= t2 0)(setq t2 nil))
(if (and t1 t2)
   (progn
      (setq t1 (strcase t1)
            t2 (strcase t2)
            c1 1)
      (repeat (strlen t2)
         (if (= t1 (substr t2 c1 (strlen t1)))(setq v1 c1))
         (setq c1 (1+ c1)))));if
v1);TinT
Pilot вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > округление и контроль размеров

Размещение рекламы