progeCAD support, tips and troubleshooting forum. progeCAD works very similar to some versions of AutoCAD. Moderated.

Moderators: caddit, Moderators

#1460 by Dong Weng
Mon Mar 07, 2011 9:25 am
After import PDF file into DXF, the drawing contents shape entities which are spline type,i have tried to explode and using flatten Objects tools from express tool bar, but nothing happened ,I expect the spline entities will be changed into line & arc like autocad does? please help how to change spline into lines & arcs.
#1461 by caddit
Mon Mar 07, 2011 11:06 am
Welcome Dong Weng,


I confirm your comment as reference the "FLATTEN" command, but this is a fairly new solution in AutoCAD as well. You have two options in progeCAD to convert splines into polylines (then explode those into arcs and lines), depending on how accurate you want.

1) Use the following AutoLISP first posted on eng-tips.com for use in AutoCAD:
Code: Select all(defun C:SPLINE2PLINE (/ SPLINES PLINETYPE OSMODE I SPL ED CODEPAIR)
  (if
    (setq SPLINES (ssget (list (cons 0 "spline"))))
     (progn
       (if
         (zerop (setq PLINETYPE (getvar "plinetype")))
          (setvar "plinetype" 1)
          ) ;if
       (setq OSMODE (getvar "osmode"))
       (setvar "osmode" 0)
       (setq I 0)
       (while
         (setq SPL (ssname SPLINES I))
          (setq    I  (1+ I)
                ED (entget SPL)
                ) ;setq
          (command ".pline")
          (foreach
               CODEPAIR
                       ED
            (if
              (= 10 (car CODEPAIR))
               (command (cdr CODEPAIR))
               ) ;if
            ) ;foreach
          (command "")
          (command ".pedit" "l" "s" "")
          ) ;while
       (if PLINETYPE
         (setvar "plinetype" PLINETYPE)
         )
       (setvar "osmode" OSMODE)
       ) ;progn
     ) ;if
  (princ)
  ) ;defun


Which produces a PLINE approximation as shown here:
Image

But a possibly more accurate solution is to save your drawing as an AutoCAD version 12 DXF file and read back in which produces a solution like this:

Image