Chuyển đến nội dung
Diễn đàn CADViet

various

Thành viên
  • Số lượng nội dung

    72
  • Đã tham gia

  • Lần ghé thăm cuối

Bài đăng được đăng bởi various


  1. Chẳng là mình vẫn dùng thường xuyên lsp OB2WO của bác ketxu. Nhưng không hiểu sao bị lỗi : Dùng lệnh thì có bản vẽ được, bản vẽ thì bị ẩn mất object wipeout ( chứ không phải object cần che các bác nhé ). Select thì vẫn được nhưng không hiện lên khi view, và di chuyển cũng rất khó khăn.

     

    Mình gửi kèm bản vẽ và lsp mong các bác giúp đỡ. Cảm ơn các bác. ( lệnh tắt W2 do mình đã đổi lệnh )

     

    1. File cần kiểm tra : chỗ khoanh tròn to là trong đó có wipeout đã bị ẩn

     

    2. File bình thường : file này thì lại chả bị gì cả ????

     

    http://www.cadviet.com/upfiles/7/111657_ob2wo_wof_wo2pl.lsp  ( link LSP - lệnh tắt W2 )

     

    http://www.cadviet.com/upfiles/7/111657_file_can_kiem_tra.dwg ( File cần kiểm tra  )

     

    http://www.cadviet.com/upfiles/7/111657_fie_binh_thuong.dwg   ( File bình thường  )


  2. Chào mọi người. Em có dùng lisp reactor. Với cad2017 ( hoặc 2016 ) thì nó vô tác dụng, trong khi 2010 vẫn okie. Mong mọi người có thể giúp tháo gỡ khó khăn này :D

     

    Đây là code lisp ạ

     

     

    layerdirector:data
       '(
                               
    ;;-----------------------------------------------------------------------------------------------------------------------------------------------------;;
    ;;  Command Pattern  |  Layer Name    |       Description       |    Colour    |   Linetype   |    Lineweight    |       Plot       |    Plot Style    ;;
    ;;-----------------------------------------------------------------------------------------------------------------------------------------------------;;
    ;;     [string]      |   [string]     |         [string]        | 0 < int <256 |   [string]   | -3 = Default     |  1 = Will Plot   |     [string]     ;;
    ;;                   |                |     Use "" for none     |              |              |  0 <= int <= 211 |  0 = Won't Plot  |  Use nil for CTB ;;
    ;;-----------------------------------------------------------------------------------------------------------------------------------------------------;;
     
    ("[DM]TEXT,TEXT"       "TEXT"           "Text Layer"                   2        "Continuous"           -3                 1                 nil         )
    ("DIM*,*LEADER"        "DIMENSIONS"     "Dimension Layer"              3        "Continuous"           -3                 1                 nil         )
    ("*VPORT*"             "DEFPOINTS"      ""                             7        "Continuous"           -3                 0                 nil         )
    ("XLINE"               "XLINE"          "Construction Lines"          12        "HIDDEN"                0                 0                 nil         )
     
    ;;-----------------------------------------------------------------------------------------------------------------------------------------------------;;
     
        )
     
    ;;----------------------------------------------------------------------;;
    ;;  Force Layer Properties  [ t / nil ]                                 ;;
    ;;  ==================================================================  ;;
    ;;                                                                      ;;
    ;;  If set to T the properties of existing layers will be modified to   ;;
    ;;  match those found in the Layer Data list above.                     ;;
    ;;----------------------------------------------------------------------;;
     
    layerdirector:forcelayprops nil
     
    ;;----------------------------------------------------------------------;;
    ;;  System Variable Settings                                            ;;
    ;;  ==================================================================  ;;
    ;;                                                                      ;;
    ;;  Populate this list with system variables whose values should be     ;;
    ;;  automatically changed when a layer change is triggered.             ;;
    ;;                                                                      ;;
    ;;  The first item should be a symbol or string corresponding to the    ;;
    ;;  name of a system variable; the second item should represent the     ;;
    ;;  value to which the system variable should be set when a layer       ;;
    ;;  change is triggered.                                                ;;
    ;;                                                                      ;;
    ;;  This parameter is optional: remove all list items if no system      ;;
    ;;  variable changes are to be performed.                               ;;
    ;;----------------------------------------------------------------------;;
     
    layerdirector:sysvars
       '(
     
    ;;---------------------------------;;
    ;;  System Variable  |    Value    ;;
    ;;---------------------------------;;
     
    (cecolor              "bylayer")
    (celtype              "bylayer")
    (celweight               -1    )
     
    ;;----------------------------------------------------------------------;;
     
        )
     
    ;;----------------------------------------------------------------------;;
    ;;  XRef-Dependent Layering                                             ;;
    ;;  ==================================================================  ;;
    ;;                                                                      ;;
    ;;  This option will cause external references (xrefs) to be inserted   ;;
    ;;  on a layer whose layer name is dependent on the name of the xref.   ;;
    ;;                                                                      ;;
    ;;  The first and second items in the below list represent an optional  ;;
    ;;  prefix and suffix which will surround the xref name in the name of  ;;
    ;;  the layer generated by the program.                                 ;;
    ;;                                                                      ;;
    ;;  The remaining items in the list determine the properties of the     ;;
    ;;  layers generated by the program for each xref; the order and        ;;
    ;;  permitted values of such properties are identical to those used by  ;;
    ;;  the Layer Data list above.                                          ;;
    ;;                                                                      ;;
    ;;  To disable this option, simply replace the below list with nil.     ;;
    ;;----------------------------------------------------------------------;;
     
    layerdirector:xreflayer
     
    ;;-----------------------------------------------------------------------------------------------------------------------------------------------------;;
    ;;   Layer Prefix   |  Layer Suffix   |       Description       |    Colour    |   Linetype   |    Lineweight    |       Plot       |    Plot Style    ;;
    ;;-----------------------------------------------------------------------------------------------------------------------------------------------------;;
    ;;    [string]      |    [string]     |         [string]        | 0 < int <256 |   [string]   | -3 = Default     |  1 = Will Plot   |     [string]     ;;
    ;; Use "" for none  | Use "" for none |     Use "" for none     |              |              |  0 <= int <= 211 |  0 = Won't Plot  |  Use nil for CTB ;;
    ;;-----------------------------------------------------------------------------------------------------------------------------------------------------;;
     
    '("XREF-"             ""               "XRef Layer"                   250        "Continuous"           -3                 1                 nil        )
     
    ;;-----------------------------------------------------------------------------------------------------------------------------------------------------;;
     
    ;;----------------------------------------------------------------------;;
    ;;  Print Command (Debug Mode)  [ t / nil ]                             ;;
    ;;  ==================================================================  ;;
    ;;                                                                      ;;
    ;;  If set to T the program will print the command name when a command  ;;
    ;;  is called. This is useful when determining the correct command name ;;
    ;;  to use in the Layer Data list.                                      ;;
    ;;----------------------------------------------------------------------;;
     
    layerdirector:printcommand nil
     
    )
     
    ;;----------------------------------------------------------------------;;
    ;;  Commands:  [ LDON / LDOFF ]                                         ;;
    ;;  ==================================================================  ;;
    ;;                                                                      ;;
    ;;  Use these to manually turn the Layer Director on & off.             ;;
    ;;----------------------------------------------------------------------;;
     
    (defun c:ldon  nil (LM:layerdirector  t ))
    (defun c:ldoff nil (LM:layerdirector nil))
     
    ;;----------------------------------------------------------------------;;
     
    (if layerdirector:sysvars
        (setq layerdirector:sysvars
            (apply 'mapcar
                (cons 'list
                    (vl-remove-if-not '(lambda ( x ) (getvar (car x)))
                        layerdirector:sysvars
                    )
                )
            )
        )
    )
     
    ;;----------------------------------------------------------------------;;
     
    (defun LM:layerdirector ( on )
        (foreach grp (vlr-reactors :vlr-command-reactor :vlr-lisp-reactor)
            (foreach obj (cdr grp)
                (if (= "LM:layerdirector" (vlr-data obj))
                    (vlr-remove obj)
                )
            )
        )
        (or
            (and on
                (vlr-command-reactor "LM:layerdirector"
                   '(
                        (:vlr-commandwillstart . LM:layerdirector:set)
                        (:vlr-commandended     . LM:layerdirector:reset)
                        (:vlr-commandcancelled . LM:layerdirector:reset)
                        (:vlr-commandfailed    . LM:layerdirector:reset)
                    )
                )
                (vlr-lisp-reactor "LM:layerdirector"
                   '(
                        (:vlr-lispwillstart . LM:layerdirector:set)
                        (:vlr-lispended     . LM:layerdirector:reset)
                        (:vlr-lispcancelled . LM:layerdirector:reset)
                    )
                )
                (princ "\nLayer Director enabled.")
            )
            (princ "\nLayer Director disabled.")
        )
        (princ)
    )
     
    ;;----------------------------------------------------------------------;;
     
    (defun LM:layerdirector:lispcommand ( str )
        (if (wcmatch str "(C:*)") (substr str 4 (- (strlen str) 4)) str)
    )
     
    ;;----------------------------------------------------------------------;;
     
    (defun LM:layerdirector:set ( obj arg / lst tmp )
        (if
            (and
                (setq arg (car arg))
                (setq arg (LM:layerdirector:lispcommand (strcase arg)))
                (setq lst (cdar (vl-member-if '(lambda ( x ) (wcmatch arg (strcase (car x)))) layerdirector:data)))
                (setq tmp (LM:layerdirector:createlayer lst))
                (zerop (logand 1 (cdr (assoc 70 tmp))))
            )
            (progn
                (setq layerdirector:oldlayer (getvar 'clayer)
                      layerdirector:oldvars  (mapcar 'getvar (car layerdirector:sysvars))
                )
                (if layerdirector:sysvars
                    (apply 'mapcar (cons 'setvar layerdirector:sysvars))
                )
                (setvar 'clayer (car lst))
            )
        )
        (if layerdirector:printcommand (print arg))
        (princ)
    )
     
    ;;----------------------------------------------------------------------;;
     
    (defun LM:layerdirector:reset ( obj arg / tmp )
        (if (or (null (car arg)) (not (wcmatch (strcase (car arg)) "U,UNDO")))
            (progn
                (if (and (= 'str (type layerdirector:oldlayer))
                         (setq tmp (tblsearch "layer" layerdirector:oldlayer))
                         (zerop (logand 1 (cdr (assoc 70 tmp))))
                    )
                    (progn
                        (setvar 'clayer layerdirector:oldlayer)
                        (setq layerdirector:oldlayer nil)
                    )
                )
                (mapcar 'setvar (car layerdirector:sysvars) layerdirector:oldvars)
                (setq layerdirector:oldvars nil)
                (if (and (car arg) (wcmatch (strcase (car arg)) "XATTACH,CLASSICXREF"))
                    (LM:layerdirector:xreflayer)
                )
            )
        )
        (princ)
    )
     
    ;;----------------------------------------------------------------------;;
     
    (defun LM:layerdirector:xreflayer ( / ent enx lay obj xrf )
        (if
            (and
                (= 'list  (type layerdirector:xreflayer))
                (setq ent (entlast))
                (setq enx (entget ent))
                (= "INSERT" (cdr (assoc 0 enx)))
                (setq xrf   (cdr (assoc 2 enx))
                      lay   (strcat (car layerdirector:xreflayer) xrf (cadr layerdirector:xreflayer))
                )
                (= 4 (logand 4 (cdr (assoc 70 (tblsearch "block" xrf)))))
                (LM:layerdirector:createlayer (cons lay (cddr layerdirector:xreflayer)))
                (setq obj (vlax-ename->vla-object ent))
                (vlax-write-enabled-p obj)
            )
            (vla-put-layer obj lay)
        )
    )
     
    ;;----------------------------------------------------------------------;;
     
    (defun LM:layerdirector:createlayer ( lst / def )
        (if (or layerdirector:forcelayprops (not (setq def (tblsearch "layer" (car lst)))))
            (apply
               '(lambda ( lay des col ltp lwt plt pst / dic )
                    (   (lambda ( def / ent )
                            (if (setq ent (tblobjname "layer" (car lst)))
                                (entmod (cons (cons -1 ent) def))
                                (entmake def)
                            )
                        )
                        (vl-list*
                           '(000 . "LAYER")
                           '(100 . "AcDbSymbolTableRecord")
                           '(100 . "AcDbLayerTableRecord")
                           '(070 . 0)
                            (cons 002 lay)
                            (cons 062 (if (< 0 col 256) col 7))
                            (cons 006 (if (LM:layerdirector:loadlinetype ltp) ltp "Continuous"))
                            (cons 370 (if (or (= -3 lwt) (<= 0 lwt 211)) lwt -3))
                            (cons 290 plt)
                            (append
                                (if (and (= 'str (type pst))
                                         (zerop (getvar 'pstylemode))
                                         (setq dic (dictsearch (namedobjdict) "acad_plotstylename"))
                                         (setq dic (dictsearch (cdr (assoc -1 dic)) pst))
                                    )
                                    (list (cons 390 (cdr (assoc -1 dic))))
                                )
                                (if (and des (/= "" des))
                                    (progn (regapp "AcAecLayerStandard")
                                        (list
                                            (list -3
                                                (list
                                                    "AcAecLayerStandard"
                                                   '(1000 . "")
                                                    (cons 1000 des)
                                                )
                                            )
                                        )
                                    )
                                )
                            )
                        )
                    )
                )
                lst
            )
            def
        )
    )
     
    ;;----------------------------------------------------------------------;;
     
    (defun LM:layerdirector:loadlinetype ( ltp )
        (eval
            (list 'defun 'LM:layerdirector:loadlinetype '( ltp )
                (list 'cond
                   '(   (tblsearch "ltype" ltp) ltp)
                    (list
                        (list 'vl-some
                            (list 'quote
                                (list 'lambda '( lin )
                                    (list 'vl-catch-all-apply ''vla-load
                                        (list 'list (vla-get-linetypes (vla-get-activedocument (vlax-get-acad-object))) 'ltp 'lin)
                                    )
                                   '(tblsearch "ltype" ltp)
                                )
                            )
                            (list 'quote
                                (vl-remove-if
                                   '(lambda ( x )
                                        (member (strcase x t)
                                            (if (zerop (getvar 'measurement))
                                               '("acadiso.lin"  "iso.lin") ;; Known metric   .lin files
                                               '("acad.lin" "default.lin") ;; Known imperial .lin files
                                            )
                                        )
                                    )
                                    (apply 'append
                                        (mapcar
                                           '(lambda ( dir ) (vl-directory-files dir "*.lin" 1))
                                            (vl-remove "" (LM:layerdirector:str->lst (getenv "ACAD") ";"))
                                        )
                                    )
                                )
                            )
                        )
                        'ltp
                    )
                )
            )
        )
        (LM:layerdirector:loadlinetype ltp)
    )
     
    ;;----------------------------------------------------------------------;;
     
    (defun LM:layerdirector:str->lst ( str del / pos )
        (if (setq pos (vl-string-search del str))
            (cons (substr str 1 pos) (LM:layerdirector:str->lst (substr str (+ pos 1 (strlen del))) del))
            (list str)
        )
    )
     
    ;;----------------------------------------------------------------------;;
     
    (   (lambda ( )
            (vl-load-com)
            (if (= 'list (type s::startup))
                (if (not (member '(LM:layerdirector t) s::startup))
                    (setq s::startup (append s::startup '((LM:layerdirector t))))
                )
                (defun-q s::startup nil (LM:layerdirector t))
            )
            (princ)
        )
    )
     
    ;;----------------------------------------------------------------------;;
    ;;                             End of File                              ;;
    ;;----------------------------------------------------------------------;;
     
     
    (   (lambda nil (vl-load-com)
            (defun c:mteditreactoron nil
                (mtedit-reactor-remove)
                (vlr-set-notification
                    (vlr-command-reactor "mtedit-reactor"
                       '((:vlr-commandwillstart . mtedit-reactor-callback))
                    )
                    'active-document-only
                )
                (vlr-set-notification
                    (vlr-editor-reactor "mtedit-reactor"
                       '((:vlr-beginclose . mtedit-reactor-clean))
                    )
                    'active-document-only
                )
                (princ "\nMTEdit Reactor enabled.")
                (princ)
            )
            (defun c:mteditreactoroff nil
                (mtedit-reactor-remove)
                (mtedit-reactor-clean nil nil)
                (princ "\nMTEdit Reactor disabled.")
                (princ)
            )
            (defun mtedit-reactor-callback ( a b )
                (if (wcmatch (strcase (car b) t) "mtedit,mleadercontentedit")
                    (if (or mtedit-reactor-wsh (setq mtedit-reactor-wsh (vlax-create-object "wscript.shell")))
                        (vl-catch-all-apply 'vlax-invoke (list mtedit-reactor-wsh 'sendkeys "^{HOME}(^+{END})"))
                    )
                )
                (princ)
            )
            (defun mtedit-reactor-clean ( a b )
                (if (= 'vla-object (type mtedit-reactor-wsh))
                    (vl-catch-all-apply 'vlax-release-object (list mtedit-reactor-wsh))
                )
                (setq mtedit-reactor-wsh nil)
                (princ)
            )
            (defun mtedit-reactor-remove nil
                (foreach grp (vlr-reactors :vlr-command-reactor :vlr-editor-reactor)
                    (foreach obj (cdr grp)
                        (if (= "mtedit-reactor" (vlr-data obj))
                            (vlr-remove obj)
                        )
                    )
                )
            )
            (c:mteditreactoron)
            (princ)
        )
    )

  3. Cái đó thì bạn tự tạo cho mình 1  cái Templet.bạn cài đặt hết tất cả các thứ cần thiết như layer,Dimension,Osnap ...v.v sau đó bạn lưu lại thành cái Templet của bạn.có thể để chế độ Read-only ấy.khi nào cần dùng thì mở file đó ra.xong vẽ rồi thì Save as nó ra 1 file mới.cứ thế muốn vẽ thì mở File Templet ra rồi lại Save as . hihi :D  :D  :D  :D

    Đổi tên thành acad.dwt copy vào ổ cài là xong. Cần gì save as :v


  4. Do thiếu file acwipeout.arx, ban thử kiếm file đó ở 2010 rồi chép qua 2016 xem sao.

     

    Em tìm trên mạng mà không có. :( Bác có thể upload lên hộ em được không ạ?

     

    // Em search trên mạng thì hình như LSP này chưa working với cad2016 

     

    in autocad 2016 appears this message “error: ARXLOAD failed”, have someone tested or modify the lisp?

  5. Em sử dụng lisp có code như thế này. Ở Acad2010 vẫn bình thường, sang 2016 thì không có tác dụng nữa. Mong mọi người giúp đỡ

    ;;; OB2WO (gile) -Gilles Chanteau- 10/03/07
    ;;; UPDATE BY KETXU (04/04/2012)
    ;;; Creates a "Wipeout" from an object (circle, ellipse, or polyline with arcs)
    ;;; Works whatever the current ucs and object OCS
    ;http://xaydungit.vn/diendan/showthread.php?7784-Wipe-PLine-và-bật-tắt-nhanh-Wipeout&p=14880779#post14880779
    ;----- Chuyen ss thanh cac Wipeout.
    (defun c:OB2WO (/ ent lst nor ss)
      (vl-load-com)
      (if  (setq ss (ssget (list (cons 0 "CIRCLE,ELLIPSE,LWPOLYLINE"))))    
        (progn
          (vla-StartundoMark
        (vla-get-ActiveDocument (vlax-get-acad-object))
          )
            (initget "Yes No")      
            (setq ans (getkword "\nDelete source object? [Yes/No] <No>: "))      
          (foreach ent (ST:Ss->ListEnt ss)
            (setq lst (ent2ptlst ent))
            (setq nor (cdr (assoc 210 (entget ent))))    
            (makeWipeout lst nor)
            (if (or (not ans) (wcmatch (strcase ans) "YES"))(entdel ent))
          )
          (vla-EndundoMark
        (vla-get-ActiveDocument (vlax-get-acad-object))
          )
        )
      )
    )
    ;----- Bat/Tat qua lai giua Wipeout va Pline
    ;; WOF (gile)
    ;; Toggles wipeout frames
    (defun c:wof (/ elst)
      (cond
        ((and
            (setq elst (dictsearch (namedobjdict) "ACAD_WIPEOUT_VARS"))
            (ssget "x" '((0 . "WIPEOUT,INSERT")))
        )
        (entmod    (subst    (cons 70 (boole 6 (cdr (assoc 70 elst)) 1))    (assoc 70 elst)    elst))
        (vlax-for obj (vla-get-activeselectionset (vla-get-activedocument (vlax-get-acad-object)))
            (vla-update obj)
        )
      )
        (T (princ "\nHave no wipeout object !"))
        )
      (princ)
    )
    ;----- Chuyen cac Wipeout thanh Pline
    ;; WO2PL (gile)
    ;; Re-creates a wipeout boundary (lwpolyline)
    (defun c:wo2pl (/ ss n wo elst pts norm ans)
      (if (setq ss (ssget '((0 . "WIPEOUT"))))
      (progn
        (initget "Yes No")      
        (setq ans (getkword "\nDelete source object? [Yes/No] <No>: "))    
        (foreach wo    (ST:Ss->ListEnt ss)    
          (setq
            elst (entget wo)
            norm (vunit (v^v (cdr (assoc 11 elst)) (cdr (assoc 12 elst))))
            pts  (wipeout2plst wo)
          )
          (entmake
        (append
          (list    '(0 . "LWPOLYLINE")
            '(100 . "AcDbEntity")
            '(100 . "AcDbPolyline")
            (cons 90 (length pts))
            (cons 38 (caddr (trans (car pts) 0 norm)))
            '(70 . 1)
            (cons 210 norm)
          )
          (mapcar '(lambda (pt)
              (setq pt (trans pt 0 norm))
              (list 10 (car pt) (cadr pt))
            )
              pts
          )
        )
          )
          (if (or (not ans) (wcmatch (strcase ans) "YES"))(entdel wo))
    (princ)      
      )))  
    )
    ;;==================SUB ROUTINES==================;;
    ;; returns the wipeout point list (WCS)
    (defun wipeout2plst (wo / elst u v mat)
      (setq    elst (entget wo)
        u    (cdr (assoc 11 elst))
        v    (cdr (assoc 12 elst))
        mat  (list u (mapcar '- v) '(0. 0. 1.))
      )
      (mapcar
        '(lambda (p)
        (mapcar '+
            (mxv (trp mat) p)
            (mapcar '(lambda (x y) (/ (+ x y) 2.)) u v)
            (cdr (assoc 10 elst))
        )
      )
        (cdr
          (mapcar 'cdr
              (vl-remove-if-not '(lambda (x) (= (car x) 14)) elst)
          )
        )
      )
    )
    ;; Transpose a matrix Doug Wilson
    (defun trp (m)
      (apply 'mapcar (cons 'list m))
    )
    ;; Apply a transformation matrix to a vector by Vladimir Nesterovsky
    (defun mxv (m v)
      (mapcar '(lambda (r) (apply '+ (mapcar '* r v))) m)
    )
    ;; V^V
    ;; Returns the cross product of 2 vectors
    (defun v^v (v1 v2)
      (list    (- (* (cadr v1) (caddr v2)) (* (caddr v1) (cadr v2)))
        (- (* (caddr v1) (car v2)) (* (car v1) (caddr v2)))
        (- (* (car v1) (cadr v2)) (* (cadr v1) (car v2)))
      )
    )
    ;; VUNIT
    ;; Returns the single unit vector
    (defun vunit (v)
      ((lambda (l)
      (if (/= 0 l)
        (mapcar (function (lambda (x) (/ x l))) v)
      )
       )
        (distance '(0 0 0) v)
      )
    )
     
     
    ;;; ENT2PTLST
    ;;; Returns the vertices list of the polygon figuring the curve object
    ;;; Coordinates defined in OCS
     
    (defun ent2ptlst (ent / obj dist n lst p_lst prec)
      (vl-load-com)
      (if (= (type ent) 'ENAME)
        (setq obj (vlax-ename->vla-object ent))
      )
      (cond
        ((member (cdr (assoc 0 (entget ent))) '("CIRCLE" "ELLIPSE"))
      (setq dist    (/ (vlax-curve-getDistAtParam
              obj
              (vlax-curve-getEndParam obj)
            )
            50
            )
        n    0
      )
      (repeat 50
        (setq
      lst
          (cons
            (trans
              (vlax-curve-getPointAtDist obj (* dist (setq n (1+ n))))
              0
              (vlax-get obj 'Normal)
            )
            lst
          )
        )
      )
        )
        (T
      (setq p_lst (vl-remove-if-not
            '(lambda (x)
                  (or (= (car x) 10)
                  (= (car x) 42)
                  )
                )
            (entget ent)
          )
      )
      (while p_lst
        (setq
      lst
          (cons
            (append (cdr (assoc 10 p_lst))
                (list (cdr (assoc 38 (entget ent))))
            )
            lst
          )
        )
        (if (/= 0 (cdadr p_lst))
      (progn
        (setq prec (1+ (fix (* 25 (sqrt (abs (cdadr p_lst))))))
          dist (/ (- (if    (cdaddr p_lst)
                      (vlax-curve-getDistAtPoint
                    obj
                    (trans (cdaddr p_lst) ent 0)
                      )
                      (vlax-curve-getDistAtParam
                    obj
                    (vlax-curve-getEndParam obj)
                      )
                    )
                    (vlax-curve-getDistAtPoint
                      obj
                      (trans (cdar p_lst) ent 0)
                    )
              )
              prec
                  )
          n    0
        )
        (repeat (1- prec)
          (setq
            lst (cons
              (trans
                (vlax-curve-getPointAtDist
              obj
              (+ (vlax-curve-getDistAtPoint
                      obj
                      (trans (cdar p_lst) ent 0)
                    )
                    (* dist (setq n (1+ n)))
              )
                )
                0
                ent
              )
              lst
            )
          )
        )
      )
        )
        (setq p_lst (cddr p_lst))
      )
        )
      )
      lst
    )
     
     
    ;;; MakeWipeout creates a "wipeout" from a points list and the normal vector of the object
     
    (defun MakeWipeout (pt_lst nor / dxf10 max_dist cen dxf_14)
      (if (not (member "acwipeout.arx" (arx)))
        (arxload "acwipeout.arx")
      )
      (setq    dxf10 (list (apply 'min (mapcar 'car pt_lst))
                (apply 'min (mapcar 'cadr pt_lst))
                (caddar pt_lst)
              )
      )
      (setq
        max_dist
      (float
        (apply 'max
              (mapcar '- (apply 'mapcar (cons 'max pt_lst)) dxf10)
        )
      )
      )
      (setq cen (mapcar '+ dxf10 (list (/ max_dist 2) (/ max_dist 2) 0.0)))
      (setq
        dxf14 (mapcar
            '(lambda (p)
            (mapcar '/
                (mapcar '- p cen)
                (list max_dist (- max_dist) 1.0)
            )
          )
            pt_lst
          )
      )
      (setq dxf14 (reverse (cons (car dxf14) (reverse dxf14))))
      (entmake (append (list '(0 . "WIPEOUT")
              '(100 . "AcDbEntity")
              '(100 . "AcDbWipeout")
              '(90 . 0)
              (cons 10 (trans dxf10 nor 0))
              (cons 11 (trans (list max_dist 0.0 0.0) nor 0))
              (cons 12 (trans (list 0.0 max_dist 0.0) nor 0))
              '(13 1.0 1.0 0.0)
              '(70 . 7)
              '(280 . 1)
              '(71 . 2)
              (cons 91 (length dxf14))
            )
            (mapcar '(lambda (p) (cons 14 p)) dxf14)
        )
      )
    )
     
    (defun ST:Ss->ListEnt (ss / n e l)
      (setq n (sslength ss))
      (while (setq e (ssname ss (setq n (1- n))))
        (setq l (cons e l))
      )  
    )  
    

    111657_untitled_1.gif


  6. Em có 1 bản vẽ như thế này. Đã biết tọa độ 5 điểm mốc và tọa độ điểm cọc thử. Vậy cần phải làm thế nào để pick điểm ra được tọa độ các điểm cọc còn lại?

     

    Thông thường bên TVTK giao bản vẽ mặt bằng tổng thể có định vị chính xác các điểm mốc, các điểm còn lại chỉ cần pick ID là ra chính xác và chỉ cần toàn đạc bắn điểm để xác định và kiểm tra lại. Vậy bên TVTK đã tạo ra bản vẽ đó bằng cách gi? Mong mọi người giải đáp. Em xin cảm ơn

     

    http://www.mediafire.com/download/291gxac7bxb7qyx/suy_toa_do_tu_toa_do_coc_thu_02.dwg

    • Vote giảm 1

  7. "Đo diện tích 1 khoảng sân mà không có toàn đạc bắn điểm. Chỉ dùng thước dây. Đơn vị khảo sát vẽ sai. Giờ em muốn tính ra khối lượng để khoán lại. Không biết có cách nào để tính mà không phải chia hình không ( vì thực ra không chính xác lắm)."

     

    Đối với đa giác muốn dựng được diện tích đúng khi chỉ biết chiều dài các cạnh thì đa giác đó phải là tam giác. Từ 4 cạnh trở lên thì với dữ liệu chiều dài các cạnh sẽ cho ra vô số đa giác đáp ứng dẩn đến diện tích không đúng.

    Vây nên đo bằng thước dây thì phải chia khu đất thành các hình tam giác mà đo sau đó mới dựng chính xác diện tích được.

     

     

     Bác ơi vậy thêm dữ liệu chiều dài đáy tam giác cân ( tam giác hợp bởi 1 góc đa giác, chiều dài 2 cạnh cân mặc định đo là 1m ). Em nghĩ như thế sẽ chỉ có 1 đáp số mà thôi. Dựng được các góc nay ta dễ dàng dựng được hình trong Cad. Nhưng vẫn còn khá thủ công. Nếu có 1 lsp với dữ liệu vào là số điểm 1 đa giác bất kì, chiều dài cạnh đầu, chiều dài cạnh thứ 2, đáy tam giác cân... lặp đến cạnh cuối cùng của đa giác :D. Kết quả sẽ có được nhanh hơn rất nhiều.


  8. Nghe có vẻ... điên rồ nhưng thực sự em đang bí mong mọi người giúp đỡ

     

    4UGjCmW.png

     

     

    Đo diện tích 1 khoảng sân mà không có toàn đạc bắn điểm. Chỉ dùng thước dây. Đơn vị khảo sát vẽ sai. Giờ em muốn tính ra khối lượng để khoán lại. Không biết có cách nào để tính mà không phải chia hình không ( vì thực ra không chính xác lắm).

    • Vote giảm 1

  9. Chào cả nhà :D. Em có 1 bản cad đang cần đo bóc diện tích sàn sử dụng. Em dùng lisp để xuất ra thông số area dạng text. Dùng lisp cộng các kết quả với nhau thì yêu cầu phải là att. Nhưng khi dùng lisp convert thì Acad báo không thể tìm được đối tượng. 

     

    Đây là file cad + lisp. Mong mọi người bớt chút thời gian giải đáp giúp em.

     

    https://dl.dropboxusercontent.com/u/27353080/Upload%202012/Desktop.rar

     Specify opposite corner: 0 found

     
     
     
     
     
     
     
     

  10. Ngày trước mình thích dùng cad 2007 nhất nhưng sau khi dùng 2010 thì dùng đến h luôn - ổn định, nhiều tính năng hơn 2007, nhẹ, các cad 2011 đến 2014 đã dùng qua nhưng ko thích chút nào, cũng có thể do ko quen.

    Mà mình vẫn đổi giao diện 2010 về classic cho dễ dùng.

     

    Bác nầy nói quá đúng ý em :D. Ngày trước xài 2007 mãi, sau thằng bạn khuyên lên 2008. Về sau mày mò layout + annotation thì dùng 2008 rồi chuyển 2010 thao tác mượt và thích hơn.

     

     

    Nói chung về 2D thì 2010 đã quá đủ. GIờ chắc ít người còn vẽ 3D bằng AutoCAd

    • Vote tăng 2

  11. Có xa xỉ gì cái "làm tư vấn thiết kế" ở thời nay bạn ơi !!! :D

     

    Với nhiều người thì không... riêng em thì muốn đi theo đường này bác ạ. Hoàn cảnh gia đình nữa. Hơn nữa hiện nay làm thi công với em nó phức tạp quá. Kiến thức chuyên môn là 1 chuyện, cách xử lí tình huống và quan hệ nữa. Bé xé ra to là hỏng việc.

     

    Với lại học chuyên về soft. Giờ chả có cơ hội dùng nữa. Chắc chắn sẽ quên dần dần... tuy rằng ko thể quên hết.


  12. Xa rồi cái thời tự học layout và annotation... Mình nhớ đã mất gần 1 năm ( vì bận học, vì lười ). Cái ĐATN là tổng hợp cuối cùng của layout và annotation... cùng 1 mớ kinh nghiệm học được từ cadviet và tự đúc kết của bản thân.

     

    Và đáng tiếc, đáng tiếc... cuối cùng ra đi thi công. Tất cả trở thành con số 0. Trong khi những kĩ năng dùng soft đã bỏ rất nhiều thời gian để hơn người khác... Nhìn 1 số người nghiễm nhiên vào làm tư vấn thiết kế mà chỉ còn biết ngửa cổ lên nhìn trời... Một ngày nào đó... ta có được thỏa nguyện.


  13. Bạn dùng lệnh SC ( SCALE ) sẽ được như ý. Phép biến đổi phân số : 1/10 -> 1/2 tức là vật thể sẽ được phóng to lên 5 lần..

     

    Đối với những người học Autocad 1 cách không chính thống ( không phải dân kĩ thuật, mới bắt đầu học Acad ) nên học bằng cách search. Ví dụ mình search google cụm từ " lệnh phóng to trong cad " ra được 95.500 kết quả. Có được tên lệnh rồi thì bạn search tiếp trên youtube sẽ rất trực quan http://www.youtube.com/results?search_query=scale+in+autocad


  14.  

    Các anh chị Pro cho em hỏi chút !

    Em muốn chuyền CAD sang PDF nhưng không hiểu sao, khi in ấn bản CAD thì khung vẫn rất chuẩn, nhưng không hiểu sao khi em chuyển sang định dạng PDF lại cứ bị lệch khung !

    Đây là cách em làm :

    - Bản vẽ setup xong xuôi, Ctrl P -> Ở Printer/ Ploter chọn DWG to PDF.pc3

    Khi đó sẽ bị thiếu khung ngay , mặc dù đã tick vào Center the Plot

    Mong các anh chị chỉ giáo ! :)

     

    Bạn chọn fit to paper chưa nhể :D. Và chỉnh size paper chuẩn chưa :D. Nên sử dụng Pdf factory là soft convert pdf tốt nhất.

     

    Nếu in theo layout thì chú ý dịch khung vào 1 chút với top, right, và left ( setting trong máy in )


  15. :D :D :D

     

    Vấn đề ở chổ 2 lúa không làm gì cả. Chẳng qua 2 lúa thấy bác thích vẽ 3D nên 2 lúa giả vờ chỉnh cho nó thành 2D xem sao và thấy thành công. :D

     

    ==> Vậy thì 2 lúa sẽ share cho bạn cái gì đây???

     

    :D :D :D

     

     Em có 1 bản vẽ gần tương tự. Tức là zoom gần thì okie, kéo xa xa tí là biết mùi ngay. Có thể là do thao tác nhấp shift + kéo chuột giữa.

     

    Với file này có thể lí giải do gom nhiều bản vẽ 1:1 nên vậy. Nhưng 1 số bản vẽ có xíu xíu mấy em 1:1 thôi mà cũng có tật tương tự ;))

     

×