Zitat:
Original erstellt von Brasi:
und wieder habe ich ein kleines Problem, bei dem mir die Suche nicht weiter hilft.
Wie in der Anlage zu sehen, wird der Masstext bei zu geringem Hilfslinienabstand in der Horizontalbemassung sauber nach außen gesetzt.
In der Vertikalbemassung sreht er mal auf der Line, dann fast darauf, kurzum er wird nicht sauber positioniert. Kann man das irgendwo einstellen oder muß ich den Masstext dann immer händisch verschieben?
Ja, das hab' ich bisher bei Bemaßungen gesehen, die von AutoCAD-Bemaßung zu ArchDIM Bemaßung konvertiert wurde. Diese Bemaßungen sind von rechts nach links erzeugt worden. ArchDIM sortiert bei der Erstellung einer Maßkette die Punkte von links nach rechts, ein Maß wird somit automatisch "richtig" herum erzeugt. Ist das Maß eng und im Stil festgelegt, dass der Maßtext dann rechts vom Maß stehen soll, dann sucht ArchDIM einfach den zweiten Maßpunkt und setzt den Maßtext rechts daneben. Bei diesen Maßen aber ist der zweite Maßpunkt der linke Punkt, so dass "rechts daneben" mitten drin ist :-)
Beim Konvertieren will ich nicht auch noch die Maße darauf hin prüfen, ob sie verkehrt herum erzeugt sind oder in einem BKS, das gerade zufällig auf dem Kopf steht, denn das würde das ohnehin schon sehr rechenintensive Konvertieren noch deutlich verlangsamen.
Mit unten stehendem Programm kannst Du diese Maße "umdrehen". Einfach in eine Datei speichern, die in AutoCAD laden und Befehl: REVDIM anwenden.
Ich werde den Befehl auch noch in ArchTools einbauen.
Gruß
Tom Berger
;; Programm Anfang
(defun ss_s2e (sset / eset counter)
(setq counter 0)
(if (= 'PICKSET (type sset))
(repeat (sslength sset)
(setq eset (cons (cdr (assoc -1 (entget (ssname sset counter)))) eset)
counter (1+ counter)
)
)
)
eset
)
(defun at-subst (newpair inlist / temp)
(cond
((not inlist)
(list newpair) ; inlist existiert nicht
)
((setq temp (assoc (car newpair) inlist))
(subst newpair temp inlist) ; existiert schon, ersetzen
)
('T
(reverse (cons newpair (reverse inlist))) ; hinten dran
)
)
)
(defun c:revdim ()
(if (setq dimsset (ss_s2e (ssget '((0 . "DIMENSION")))))
(foreach dim dimsset
(setq el (entget dim)
elnew (at-subst (cons 14 (cdr (assoc 13 el))) el)
elnew (at-subst (cons 13 (cdr (assoc 14 el))) elnew)
)
(entmod elnew)
(ad-updatedimension dim)
)
)
)
;; Programm Ende
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP