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

Bee

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

    546
  • Đã tham gia

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

  • Ngày trúng

    37

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


  1. 1 phút trước, Học Sinh Lớp 1 đã nói:

     

    e hơi dốt :(( tiện thể đây nhờ bác giải thích cho e cái này với ạ :(

    (vlax-ename->vla-object (car (entsel "\nChon text de ghi ket qua:")))

    và hàm này nữa

    vla-put-TextString

    Help thôi

    (setq e (car (entsel))) <Entity name: 27e0540>

    (vlax-ename->vla-object e) #<VLA-OBJECT IAcadLWPolyline 03f713a0>

    --> (car (entsel)) return ename

    -->(vlax-ename->vla-object ename) return 1 activex object

    --> (vla-get....) lấy 1 property nào đấy của vlaobj

    -->(vla-put...) đặt 1 property nào đấy của vlaobj theo giá trị mình muốn.

    --> muốn xem object có những property gì thì dùng (vlax-dump-object vlaobj)

    Tìm hiểu sâu hơn thì ngcuu về ActiveX của Window. Vlisp có thể control ActiveX object trong win của tất cả các phần mềm: word, excell, .......

    Tạm thế còn lại hóng các repply khác. ^_^

     


  2. 1 phút trước, Học Sinh Lớp 1 đã nói:

    hehe e có sđt rồi mờ bữa say quá mất luôn đt thế là mất liên lạc với bác luôn ^^ a có tài liệu về làm vl-.... và hàm acet-... gửi cho e xin với ^^ :P

     

    cần hàm gì thì google hàm đấy. Hoặc đọc help là được mà. Diễn đàn cũng nhiều bài nói rồi, em chịu khó tìm nhé. Hàm nào khó thì pót lên ai rảnh sẽ trả lời ngay mà. ^_^


  3. Vào lúc 25/9/2018 tại 11:22, Ba Thang đã nói:

    Chào anh chị em, mọi người cho em hỏi là làm sao khóa bản vẽ khi gửi file cad để khi họ xem họ không sửa kích thước hay coopy đc a ?

    Print khung tên thành JPG. Insert JPG vào CAD save thành file CAD. Thích CAD thì gửi file CAD này . ^_^


  4. 4 giờ trước, Danh Cong đã nói:

    Mình có đoạn code như sau:

    (defun c:ABC ()  (or name (setq name "Con meo"))
      (initget 128 "Con meo/Con chuot")
      (setq name (cond ((getkword (strcat "\nBan thich con nao : [Con meo/Con chuot] <" name ">")))(name)))
      (princ))

    Mình nhận thấy thấy hàm "Initget" không chấp nhận với "Con meo" , do nó có chứa dấu cách.

    Tức là phải thay "Con meo" = "CON-MEO" , "Con chuot" = "CON_CHUOT" thì lisp mới chạy được.

    Vậy các bác cho hỏi có cách nào sử dụng dấu cách,  sử dụng chữ thường với trường hợp ở trên không ạ. Em xin cảm ơn :)))

     

    He he

    Trường hợp này cho chọn chữ cái đầu thôi: M hoặc C

    không phải gõ dài dòng con mèo với con chuột.

    ^_^

    • Vote tăng 1

  5. 21 giờ trước, simmung đã nói:

    em mở file cad lên nó báo lỗi contains authoring elements. open in block editor? em nhấn yes,no,cancel đều bị hủy.Dưới đây là file của em.Mong mọi người giúp đỡ

    01.BD CAU 63.dwg

    Mình mở bình thường không thấy báo lỗi gì. CAD 2018. Chắc do CAD của bạn lỗi rồi.


  6. 9 giờ trước, beeboy đã nói:

    Oh, mình xin cám ơn mấy bác đã chỉ.

     

    Giúp mình sửa  lisp dùng để khóa, mở khóa layer (Lock/Unlock Layer/Unlock All Layer)

    Nhưng trong quá trình sử dụng mình phát hiện có điểm bất tiện là: mỗi lần nhập lệnh thì lisp chỉ (khóa/mở khóa) được 1 đối tượng/mỗi lần nhập lệnh

    Nhờ mọi người giúp mình sửa lisp trở nên tiện lợi hơn: cụ thể là: mỗi lần nhập lệnh sẽ pick được nhiều đối tượng. (chọn đc nhiều đối tượng/mỗi lần nhập lệnh)

    Thử cái này xem ^_^

    (defun c:lock_m  (/ n ss)
      (prompt "\nTo Lock their Layer(s),")
      (setq ss (ssget)) 
      (repeat (setq n (sslength ss))
        (command "_.layer" "_lock" (cdr (assoc 8 (entget (ssname ss (setq n (1- n)))))) "")
        ) ; repeat
      )
    
    (defun c:unlock_m  (/ n ss)
      (prompt "\nTo Lock their Layer(s),")
      (setq ss (ssget)) 
      (repeat (setq n (sslength ss))
        (command "_.layer" "_unlock" (cdr (assoc 8 (entget (ssname ss (setq n (1- n)))))) "")
        ) ; repeat
      )

     

    • Like 2

  7. 2 giờ trước, jangboko đã nói:

    Chào các bạn. Mình có vấn đề với tỷ lệ với các đối tượng chứa annotative. Mong các bạn giúp đỡ.

    - lệnh "AIOBJECTSCALEREMOVE" có tác dụng remo tỷ lệ hiện hành trong đối tượng chứa annotative ( ví dụ ở môi trường model mình đang để tỷ lệ annotative là 30. Khi sử dụng lệnh " AIOBJECTSCALEREMOVE " nó sẽ remo tỷ lệ 30 trong đối tượng được chọn). Mình nhờ các bạn viết hộ mình 1 lisp có tác dụng ngược lại. Có nghĩa là nó sẽ remo tất cả các tỷ lệ trong đối tượng đó, trừ tỷ lệ hiện hành. 

    - Cám ơn các bạn, cám ơn diễn đàn :D

    Không biết đúng ý bạn không. ^_^

    (nguồn http://www.cadtutor.net/forum/showthread.php?53069-Annotative-troubles&amp;p=359702&amp;viewfull=1#post359702)

    Code here:

    (defun c:ObjectScaleCurOnly (/ ss n scLst OSC:GetScales)
      (print "Select the objects you wish to modify: ")
      (if (or (setq ss (ssget "I")) (setq ss (ssget)))
        (progn
          ;; Define helper function to get scales attached to an entity
          (defun OSC:GetScales (en / ed xn xd cdn cdd asn asd cn cd sn sd cannoscale)
            (setq ed (entget en))
            (if (and
                  ;; Get the XDictionary attached to the object
                  (setq xn (vl-position '(102 . "{ACAD_XDICTIONARY") ed))
                  (setq xn (cdr (nth (1+ xn) ed)))
                  (setq xd (entget xn))
                  ;; Get the Context Data Management dictionary attached to the XDictionary
                  (setq cdn (vl-position '(3 . "AcDbContextDataManager") xd))
                  (setq cdn (cdr (nth (1+ cdn) xd)))
                  (setq cdd (entget cdn))
                  ;; Get the Annotation Scales dictionary attached to the CD
                  (setq asn (vl-position '(3 . "ACDB_ANNOTATIONSCALES") cdd))
                  (setq asn (cdr (nth (1+ asn) cdd)))
                  (setq asd (entget asn))
                  ;; Get the 1st scale attached
                  (setq cn (assoc 3 asd))
                  (setq cn (member cn asd))
                )
              ;; Step through all scales attached
              (while cn
                (if (and (= (caar cn) 350) ;It it's pointing to a scale record
                         ;; Get the record's data
                         (setq cd (entget (cdar cn)))
                         ;; Get the Context data class
                         (setq sn (assoc 340 cd))
                         (setq sd (entget (cdr sn)))
                         (setq sn (assoc 300 sd))
                         ;; Check if the scale is already in the list
                         (not (vl-position (cdr sn) scLst))
                    )
                  ;; Add it to the list
                  (setq scLst (cons (cdr sn) scLst))
                )
                (setq cn (cdr cn))
              )
            )
          )
    
          ;; Find a list of scales used in selection
          (setq n (sslength ss))
          (while (>= (setq n (1- n)) 0)
            (OSC:GetScales (ssname ss n))
          )
    
          ;; Add the current scale to the selection
          (setq cannoscale (getvar "CANNOSCALE"))
          (command "._ObjectScale" ss "" "_Add" cannoscale "")
    
          ;; Remove all other scales attached
          (command "._ObjectScale" ss "" "_Delete")
          (foreach n scLst
            (if (wcmatch (strcase n) (strcat "~" (strcase cannoscale)))
              (command n)
            )
          )
          (command "")
        )
      )
    
      (princ)
    )

     

    • Like 1
×