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

huunhantvxdts

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

    857
  • Đã tham gia

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

  • Ngày trúng

    40

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


  1. 15 phút trước, Hoàng trọng vinh 88 đã nói:

    Chào mọi người trong diễn đàn. Mình tìm mãi trên mạng, cũng như đã hỏi mua 1 số lisp về thông kê thép dầm, sàn, cột, đai nhưng vẫn chưa dùng được. Mình hỏi trong diễn đàn ai có bộ lisp ấy không cho mình xin với, mình trả phí. Cảm ơn mọi người

    liên hệ zalo 0848998045

    gửi bản vẽ cho mình xem trước nhé


  2. 8 giờ trước, Thái Tuân đã nói:

    Cả nhà giúp có thể giúp e viết lisp chọn nhanh được cùng 1 loại block động dynamic ( cụ thể ở đây là cửa động) tuy cùng tên nhưng đã biến đổi khi mình đã co kéo kích thước hoặc Flip không ạ. Em chọn Select Similar thì nó chọn toàn bộ block cùng tên chứ không phân ra được như e mong muốn. 

    Ngoài ra còn 1 vấn đề e mắc phải nữa là khi thống kê cửa tự động với Data Extraction thì e không biết làm ntn để tạo được bảng số lượng cửa ở các tầng như ảnh đính kèm.( từ khúc đầu đến chỗ kích thước-quy cách thì e biết) còn từ khúc phân bố các tầng thì e k cách nào đếm được nó theo như form bên dưới ạ. Mong các pro giúp đỡ cho e với ạ :( 

    216052471_2239027202904969_8021428484773988522_n.jpg

    Cái này cần file cad thực tế bạn nhé

    liên hệ zalo 0848998045

     

    • Like 1

  3. 1 giờ trước, NHUNGLE_HD đã nói:

    Việc Block  block attribute thì mình cũng đang sử dụng, copy ra và sửa Text, nhưng mình gặp khó khăn nên mới nhờ giúp đỡ và nó không vô lý, vì mình

    đang cần nó. Bạn Bee hiểu dùm. Và ở đây mình không sửa Text

    Lisp sẽ thay bạn việc copy và sửa text bạn chỉ cần chọn tất cả nhưng cái bạn cần chèn block. Đồng ý tạo block att liên hệ mình để trao đổi thêm mấy cái add zalo nhé 0848998045


  4. 6 phút trước, hiephl đã nói:

    Chào cả nhà, em mới tìm hiểu lisp. Cho em hỏi lỗi sai ạ, em cảm ơn
    (Defun c:ctt (/ d1 d2 d3 d4 d5 t1 t2 t3);(THEPSAN)
    (setvar "angbase" 0)
    ;(setvar "clayer" ....)
    (command "ortho" "on")
    (setq d1 (getpoint "\nBan toi:"))
    (setq d2 (getpoint "\nBan nghi :"))
    (setq d3 (getpoint "\nDam nghi 1 :"))
    (setq d4 (getpoint "\nDam nghi 2:"))
    (setq d5 (getpoint "\nBan toi:"))
    (setq goc (angle d3 d4))
    (setvar "osmode" 0)
    (setq t1 (POLAR d1 (+ goc) 100))
    (setq t2 (POLAR d2 (+ goc) 500))
    (setq t3 (POLAR t2 (+ goc (/ pi 2)) (/ (- d3 d2) 4))
    (Command ".pline" d1 t1 "" )
    (Command ".pline" t1 t2 "" )
    (Command ".pline" t2 t3 "" )
    (setvar "osmode" 641)
    (princ)
    )

     

    dòng này thiếu dấu ngoặc nhé

    (setq t3 (POLAR t2 (+ goc (/ pi 2)) (/ (- d3 d2) 4)))


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

    Cảm ơn bạn, nhưng khi dùng báo lỗi, bạn kiểm tra dùm mình với nhé

    First point:; error: bad argument type: point

    Không hiểu sao máy bạn lại bị lỗi, mình kiểm tra trên máy mình chạy ok nhé

    viết lại lisp bỏ phần dư thừa

    (defun C:XY( / p1 p2)
    (setq dimtadold (getvar "dimtad"))
    (setvar "dimtad" 1)
    (while (setq
        p1 (getpoint "\nFirst point:"))
    (setq
        p2 (getpoint p1 "\nNext point:")
    )
    (command "leader" p1 p2 "a" (strcat "X="(rtos (cadr p1)) "\\P" (strcat "Y="(rtos (car p1)))) "")
    )
    (setvar "dimtad" dimtadold)
    (princ)
    )

     

    • Like 1

  6. 22 phút trước, lanvientkh đã nói:

    (defun C:XY( / p1 p2)
    (setq
        p1 (getpoint "\nFirst point:")
        p2 (getpoint p1 "\nNext point:")
    )
    (setvar "dimtad" 1)
    (command "leader" p1 p2 "a" (strcat "X="(rtos (cadr p1)) "\\P" (strcat "Y="(rtos (car p1)))) "")
    (princ)
    )


    Mình muốn thêm dòng lặp và chỉ kết thúc khi enter mà tìm hiểu chưa làm được, bạn hỗ trợ dùm

    (defun C:XY( / p1 p2)
    (setq
        p1 (getpoint "\nFirst point:")
        p2 (getpoint p1 "\nNext point:")
    )
    (setvar "dimtad" 1)
    (command "leader" p1 p2 "a" (strcat "X="(rtos (cadr p1)) "\\P" (strcat "Y="(rtos (car p1)))) "")
    (while (setq
        p1 (getpoint "\nFirst point:"))
    (setq
        p2 (getpoint p1 "\nNext point:")
    )
    (setvar "dimtad" 1)
    (command "leader" p1 p2 "a" (strcat "X="(rtos (cadr p1)) "\\P" (strcat "Y="(rtos (car p1)))) "")
    )
    (princ)
    )

    Sửa lại cho bạn nhé


  7. 1 giờ} trướ}c, MacTin đã nói:

    Mình cần lisp chỉnh lý trình trắc ngang của vnroad, mình đã tìm trên google nhưng chưa có líp này, trước có lisp ha nhưng chỉ dùng cho trắc ngang nova, mình đã thử sửa lisp nhưng không được, mong các bác giúo mình với ạ.

    TDTN TK.dwg

    bạn xem cái này được không nhé

    https://www.facebook.com/groups/205847143464966/permalink/630909657625377

    • Like 1

  8. 1 giờ trước, saukhoai đã nói:

    ae giúp với

    (defun C:z1 (/ giatri sokhoang ss)
    (vl-load-com)
    (setq oldos (getvar "OSMODE"))
    (setvar "cmdecho" 0)
    (setvar "osmode" 0)
    (command "osnap" "none")
    (if (null bcd)
     (progn
     (setq bcd 150)
     ))
     (setq bcd1 (getstring (strcat "\nBuoc cot dai <"(rtos bcd 2 0)"> :")))
     (if (/= bcd1 "") (setq bcd (atof bcd1)))
     (if (null dkt)
     (progn
     (setq dkt 6)
     ))
     (setq dkt1 (getstring (strcat "\duong kinh thep <"(rtos dkt 2 0)"> :")))
     (if (/= dkt1 "") (setq dkt (atof dkt1)))
    (if (null khieu)
    (progn
    (setq khieu "1")
    ))
    (setq khieu1 (getstring (strcat "\nNhap ky hieu thep <" khieu "> :")))
    (if (/= khieu1 "") (setq khieu khieu1))
    (prompt "\nChon doi tuong Dim.")
    (setq ss (acet-ss-to-list (ssget '((0 . "DIMENSION")))))
    (foreach enxt ss
    (if (or (= (setq giatri (cdr (assoc 1 (entget enxt)))) "<>") (= (setq giatri (cdr (assoc 1 (entget enxt)))) ""))
    (setq giatri (cdr (assoc 42 (entget enxt))))
    (setq giatri (atof (cdr (assoc 1 (entget enxt)))))
    )
    (setq toado (polar (cdr (assoc 11 (entget enxt))) (/ pi -2) 300))
    (setq sokhoang (+ (fix (/ giatri bcd)) 1))
    (setq text (strcat "[" khieu "]-" (rtos sokhoang 2 0) "%%C" (rtos dkt 2 0) "a" (rtos bcd 2 0)))
    (command "TEXT" "J" "C" toado 150 0 text)
    )
    (princ)
    )

    Bạn kiểm tra được chưa nhé


  9. 1 giờ} trướ}c, Nguyễn Cảnh Thạch đã nói:

    Xin các cao nhân giúp đỡ.!!

    Em có 2 đối tượng ( đối tượng 1 là đường polyline , đối tượng 2 là đường tròn hoặc các đường line khác) . em muốn lisp pick vào đường polyline ( đối tượng 1 ) thì sẽ tự động đo kích thước từ các điểm đỉnh đối tượng 1 vuông góc tới đối tượng 2 . ( xem hình) 

    Xin cảm ơn

    picture1.png

    Tham khảo cái này bạn nhé

    Hoàn công hầm Thủy Điện - YouTube https://www.youtube.com/watch?v=cqF1wPnJNfw

    • Like 1

  10. 14 giờ trước, hoacomay70 đã nói:

    Trước bác Tot77 có viết cho em một lisp rất hay như sau:

    - chọn một đường pline 1 cho trước

    - chọn 1 đường pline 2 ( hoặc line)vuông góc với pline 1 đó

    - chọn điểm đầu (hoặc cuối) của pline để xác định hướng rải

    - nhâp khoảng cách cần rải và số lượng đường cần rải

    Lisp sẽ rải ra các đường pline vuông góc với pline 1 và cách pline 2 khoảng cách người dùng nhập.

    Trước em dùng lisp này rất tốt nhưng hiện tại em hay phải thao tác với các đường pline 1 rất dài, bản vẽ nặng, công zoom để chọn được

    điểm cuối của pline rất lâu. Em nhờ các bác có thể sửa giúp lisp để không cần phải chọn điểm đầu (hoặc cuối) của pline mà lisp tự động 

    vẽ ra 2 đầu của pline đc không ạ.

    Em xin cảm ơn.

     

    test.lsp

    (defun c:test(/ pl obj dd dait cl n os ki )
      (defun ad(v p1 p2 / a1)
        (abs (- (vlax-curve-getDistAtPoint (setq a1 (vlax-ename->vla-object v)) (vlax-curve-getClosestPointTo a1 p2))
      (vlax-curve-getDistAtPoint a1 (vlax-curve-getClosestPointTo a1 p1)))))
      
      (defun getp(v dis)
         (vlax-curve-getPointAtDist (vlax-ename->vla-object v) dis))
      
      (defun thgoc (ent pt / param obj) 
        (if (setq param (vlax-curve-getParamAtPoint (setq obj (vlax-ename->vla-object ent)) pt))
          (- (angle '(0 0 0) (vlax-curve-getFirstDeriv obj param))  (/ pi 2))
          nil))
      
      (defun daitc(v / obj)    
          (vlax-curve-getDistAtParam (setq obj (vlax-ename->vla-object v)) (vlax-curve-getEndParam obj)))
      
      ;;;
      
      (setq pl (car (entsel "\nChon Polyline:"))
    li (car (entsel "\nChon duong thang vuong goc voi Polyline:"))
    dail (daitc li)
    obj (vlax-ename->vla-object pl) 
    dg (vlax-curve-getClosestPointTo obj (acet-dxf 10 (entget li)))
    )
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    (if (< (distance dg (vlax-curve-getEndPoint obj)) (distance dg (vlax-curve-getStartPoint obj))) 
    (setq dd (vlax-curve-getStartPoint obj))
    (setq dd (vlax-curve-getEndPoint obj))
    )
    
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    (or (and cd (or (= (type cd) 'int) (= (type cd) 'real))) (setq cd 20.00))
    (setq cd (cond ((getreal (strcat "\nNhap buoc de rai <" (rtos cd 2 2) ">:"))) (cd)))
    ;(setq cd (getreal "\nNhap buoc de rai:"))
    ;(setq sl (getint "\nSo luong coc rai"))
    (or (and sl (or (= (type sl) 'int))) (setq sl (fix (/ (GetDis obj dd dg) cd))))
    (setq sl (cond ((getint (strcat "\nNhap buoc de rai <" (rtos sl 2 0) ">:"))) (sl)))
    (setq ct (vlax-curve-getDistAtPoint obj dg)
    n 0
    os (getvar "OSMODE"))
      (if (< (distance dd (vlax-curve-getStartPoint obj)) (distance dd (vlax-curve-getEndPoint obj)))
        (setq ki nil) (setq ki t))
      (setvar "OSMODE" 0)
      (repeat sl         
        (command "line"
        (setq dg1 (if ki (getp pl (+ ct (* (setq n (1+ n)) cd)))
         (getp pl (- ct (* (setq n (1+ n)) cd)))))   
        (polar dg1 (thgoc pl dg1) dail) ""))
      (setvar "OSMODE" os)
      (princ)
    )
    (defun GetDis (en pt1 pt2 / dis1 dis2 dis)
    (setq
    dis1 (vlax-curve-getDistAtPoint en (vlax-curve-getClosestPointTo en pt1))
    dis2 (vlax-curve-getDistAtPoint en (vlax-curve-getClosestPointTo en pt2))
    dis (abs (- dis2 dis1))
    )
    )

    Sửa lại cho bạn nhé. Số lượng có thể nhập nếu không muốn rải hết, còn rải hết thì cứ việc ấn Enter nhé


  11. 3 giờ trước, vanhuyou đã nói:

    Cám ơn bạn mình có xem nhưng lisp đó phải pick điểm đặt cho dim và phải làm từng pline 1.

    Nhờ mọi người sữa giúp mình là điểm đặt dim tự động ở điểm đầu hoặc điểm cuối củng được, và có thể quét 1 lần nhiều pline.

    Mình thấy lisp ở trong bài @Danh Conggợi ý cũng đáp ứng yêu cầu ở trên của bạn rồi. chỉ cần set lại vị trí điểm đặt =0 nữa là ok.

    Bạn nên vào bài trên đó yêu cầu thêm. 

     


  12. Vào lúc 27/2/2021 tại 09:57, hoacomay70 đã nói:

    Khi làm việc em thường phải chèn rất nhiều block kiểu này, nên xin các bác có thể viết giúp em lisp như sau không ạ.

    Em có 1 đường pline có sẵn, và các block cần chèn lên pline này. Lisp cho em 2 lựa chọn:

    - LC1: khi em nhập khoảng cách trên pline và tên block cần chèn, lisp sẽ tự động

    chèn block trên pline theo hướng vuông góc với pline tại khoảng cách em đã nhâp.

    - LC2: lựa chọn nhập khoảng cách và tên block cần chèn theo file excel (như hình dưới ạ)

    Em xin cảm ơn các bác.

    111.jpg

    222.jpg

    Thấy đề bài khá hay liên hệ mình nhé https://www.facebook.com/lienkettudong


  13. 9 giờ trước, kateBL đã nói:

    Chào các bạn, mình có 1 vấn đề như sau:

     

    Khi làm việc với bản vẽ cọc (rất nhiều cọc) cần đánh stt và xuất tọa độ vn2000. Mình đã tìm được 1 lisp giải quyết được vấn đề này tuy nhiên lisp đó có hạn chế như sau:

    1. Phải click chọn từ điểm cọc hoặc

    2. Vẽ đường pline qua các điểm đó và thứ tự click chọn sẽ quyết định STT cho cọc

    Cách làm này khá ổn đối với số lượng cọc trên mặt bằng cọc còn ít nhưng với số lượng cọc >1000 thì thời gian thao tác rất lâu và nhiều khi sai do bắt điểm ko chính xác.

     

    Do đó mình muốn tự viết một lisp giải quyết vần đề trên như sau:

    1. Tự động lấy tọa độ tâm hình tròn là tọa độ tâm cọc (do ghi chú cọc bằng hình tròn nên dùng tâm hình tròn để xác định tọa độ)

    2. Sắp xếp STT theo tọa độ lấy được từ 1. 

    3. Đưa ra 2 tùy chọn, một là sắp xếp stt từ trái qua phải + từ trên xuống dưới; 2 là từ trên xuống dưới + từ trái sang phải

    4. Vẽ đường pline qua các điểm theo stt ở 3

    5. Dùng lisp đã có -> chọn pline ở 4 để đánh stt cọc + tọa độ vn2000

     

    Mình đã tìm nhưng không thấy trên diễn đàn có bài viết theo nhu cầu của mình. Nhờ các bạn giúp đỡ

     

    Xin cảm ơn

     

    Cái này mình đã từng viết cho 1 bạn đặt hàng nếu bạn cần ib mình hoặc liên hệ Autolisp hỗ trợ vẽ Cad | Facebookhttps://www.facebook.com/lienkettudong

    • Like 1

  14. 2 giờ trước, pdhuyxn2 đã nói:

    Nhờ các Bác trên diễn đàn giúp đỡ chỉnh sửa lisp này thành lisp  dóng kích thước hàng loạt các block.

      

    ;; AUTO DIMALINGED LINES AND POLYLINES
    ;;;-------------------------------------------------------------
    (defun TBCong (x1 x2) (/ (+ x1 x2) 2)) ;;;Trung binh cong
    ;;;-------------------------------------------------------------
    (defun MidP (p1 p2) ;;;Midpoint
    (list (TBCong (car p1) (car p2)) (TBCong (cadr p1) (cadr p2)) (TBCong (caddr p1) (caddr p2)))
    )
    ;;;-------------------------------------------------------------
    (defun getVert (e / i L) ;;;Return list of all vertex from pline e
    (setq i 0 L nil)
    (vl-load-com)
    (repeat (fix (+ (vlax-curve-getEndParam e) 1))
        (setq L (append L (list (vlax-curve-getPointAtParam e i))))
        (setq i (1+ i))
    )
    L
    )
    ;;;-------------------------------------------------------------
    (defun etype (e) (cdr (assoc 0 (entget e)))) ;;;Entity type
    ;;;-------------------------------------------------------------
    (defun dim2p (p1 p2 s) ;;;Dimaligned 2 Point
    (command "dimaligned" p1 p2 (polar (MidP p1 p2) (+ (angle p1 p2) (/ pi 2)) s))
    )
    ;;;-------------------------------------------------------------
    (defun dimLine(e s) ;;;Dimaligned Line
    (dim2p (cdr (assoc 10 (entget e))) (cdr (assoc 11 (entget e))) s)
    )
    ;;;-------------------------------------------------------------
    (defun dimPline(e s) ;;;Dimaligned PLine
    (setq Lp (getvert e) i 0)
    (repeat (1- (length Lp))
        (dim2p (nth i Lp) (nth (1+ i) Lp) s)
        (setq i (1+ i))
    )
    )

    ;;;-------------------------------------------------------------
    (defun C:ATD( / ss s oldos e) ;;;AutoDimaligned Line & Pline
    (if (not s0) (setq s0 0))
    (setq
        ss (ssget '((0 . "LINE,LWPOLYLINE")))
        s (getdist (strcat "\nKhoang cach tu doi tuong den duong kich thuoc <" (rtos s0) ">:"))
        oldos (getvar "osmode")
    )
    (if (not s) (setq s s0) (setq s0 s))
    (setvar "osmode" 0)
    (while (setq e (ssname ss 0))
        (if (= (etype e) "LINE") (dimLine e s) (dimPline e s))
        (ssdel e ss)
    )
    (setvar "osmode" oldos)
    (princ)
    )
     

     

    ATD.LSP

    Giong kich thuoc cac Block.dwg

    Gửi bạn nhé

    Lệnh DAT

    Lưu ý: Các block chuyển cao độ z về 0 nhé

    Dim BL Auto (DAT).rar

    • Like 1
×