Missing important very basic functions compared to Autodesk C3D
Hello
New Bricscad user here, transiting from C3D.
Would like to know if it is just my problem finding some quite basic functions like:
a) stepped offset for offseting 3D polylines. Its very basic and very useful/important function to have at least when I am modelling surfaces. Where can I find this function?
b) moving blocks to attribute elevation. Also very basic and useful function.
c) TIN surface - displaying elevation at cursor position. Helps a lot when making new alignments and comparing new corridor levels compared to current surface elevations.
These are problems which I just hope are my lack of finding settings and functions and are already built in BricsCAD.
None of these is any rocket science and could be done by skilled programmer in a day or two.
Regards
Comments
-
"stepped offset" I know what your after look at a road kerb only have 1 line but want 3 more. It has been asked before over at forum/Autodesk, the issue is determining the rules for the offset. In particular at changes of direction. I can not remember if a solution was provided. One way around it is to do a 2d offset but then remake by resetting the Z values of the new offset line.
I may be able to help added to my to do list.
" moving blocks to attribute elevation" should be an easy mod using lisp.
"displaying elevation" there is some code out there find point on a 3dface. Google is your friend.
Have you contacted Bricscad support ? The more people who ask for these type of enhancements the better the chances they will be added.
Just a comment have a look at Civil Site Design runs within Bricscad Pro.
0 -
This is at a very early stage needs a pick start end will add soon.
; Offset a 3dpoly with a height adjust.
; start end to be added
; BY AlanH DEC 2024(defun c:test ( / )
(setq oldsnap (getvar 'osmode))
(setvar 'osmode 0)(defun LWPoly (lst cls)
(entmakex (append (list (cons 0 "LWPOLYLINE")
(cons 100 "AcDbEntity")
(cons 100 "AcDbPolyline")
(cons 90 (length lst))
(cons 70 cls))
(mapcar (function (lambda (p) (cons 10 p))) lst)))
)(setq obj (vlax-ename->vla-object (car (entsel "\nPick object "))))
(setq typ (vlax-get obj 'objectname))
(if (= typ "AcDb3dPolyline")
(princ)
(alert (progn (alert "non 3d object just use normal Offset \nwill now exit")(exit)))
)(setq co-ords (vlax-get obj 'coordinates))
(setq coordsxyz '())
(setq numb (/ (length co-ords) 3))
(setq I 0)
(repeat numb
(setq xyz (list (nth I co-ords)(nth (+ I 1) co-ords)(nth (+ I 2) co-ords)))
(setq coordsxyz (cons xyz coordsxyz))
(setq I (+ I 3))
); make 2d poly and offset.
(setq lst2d '())
(foreach pt coordsxyz
(setq lst2d (cons (list (car pt)(cadr pt) 0.0) lst2d))
)(LWPoly lst2d 0)
(setq entl (entlast))(setq off (getreal "\nEnter offset value "))
(setq htoff (getreal "\nEnter height offset value "))
(vla-offset (vlax-ename->vla-object (entlast)) off)(setq co-ord (mapcar 'cdr (vl-remove-if-not '(lambda (x) (= (car x) 10)) (entget (entlast)))))
(command "erase" entl (entlast) ""); make a 3d poly with new co-ords
(setq x 0)
(setq lst3 '())
(foreach pt co-ord
(setq lst3 (cons (list (car pt)(cadr pt) (+ htoff (caddr (nth x coordsxyz)))) lst3))
(setq x (1+ x))
)
(setq lst3 (reverse lst3))(setq x (length lst3))
(command "3dpoly")
(repeat x
(command (nth (setq x (- x 1)) lst3))
)
(command "")(princ)
)
(c:test)0