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

ThanhDattdk

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

    22
  • Đã tham gia

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

  • Ngày trúng

    2

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


  1. Cảm ơn bạn. Mình muốn điền text vào vị trí điểm màu xanh đó ( đại loại là chọn hàng loạt Hatch và điền 1 text nào đó tại điểm tâm Hatch đó cho dễ nhìn, vì mình có xem qua mã DXF của hatch mà không biết nên xác định điểm nào để cho dễ coi mà click vào thấy điểm màu xanh đó nên thắc mắc xem có cách nào xđ điểm đó không.

    Mình đã khắc phục bằng dòng lệnh sau, thấy cũng tạm ổn

     

    (setq  Rec (acet-ent-geomextents e)

      pt1 (nth 0 Rec);lay dinh
      pt2 (nth 1 Rec);lay dinh 
      mid (acet-geom-midpoint pt1 pt2))
    • Vote tăng 1

  2. Bạn dùng:

    (setq ssg

    (vl-remove-if '(lambda(x) (member x ssg1)) ssg)

    )

    em cảm ơn bác nhiều. Em mới kiểm tra lại thì cái tập của em nó như vầy

    ssg1 ((5 10 0) (10 15 0))

    ssg  ((5 10) (10 15) (20 25) (30 35))

    em vẫn muốn trả về ssg ((20 25) (30 35)) thì có cách nào khử z trong ssg1 (và số pt của tập ssg1 không biết trước nhưng ssg1 là tập con của ssg)

    mình nên dùng lệnh nào vậy bác


  3. Xin chào các bác. Em muốn hỏi về việc xóa các phần tử của Tập đối tượng con mà có trong Tập đối tượng mẹ

    VD: Em có tập đt ssg1 gồm ((5 10) (15 20)) và tập đt ssg gồm ((5 10) (15 20) (25 30) (35 40))

    Em muốn tạo 1 tập mới là ssg mà xóa các phần tử của tập ssg1 trong tập ssg: kết quả trả về ssg ((25 30) (35 40))

    Mong các bác giúp em với.


  4. Em xin chào các bác, em xin hỏi 1 vấn đề thưa các bác. Em có file excel với các nội dung  text và số ở các hang các cột khác nhau, em muốn lấy nội dung của 1 ô bất kỳ nào đó hoặc 2 hay nhiều ô thì phải câu lệnh như thế nào ạ.

    Hàm real-line nó đọc theo từng hang vậy thì lọc ra từng phần tử bằng cách nào thưa các bác. Mong các bác giúp đỡ em với. Em xin cảm ơn


  5. Đoạn 1: Đây là hàm *Error*. Thông thường dùng  bẫy lỗi, để nếu có lỗi sảy thì lisp sẽ chạy theo hàm *error* tự tạo.

    đọc thêm phần này để hiểu chi tiết, do khá loằng ngoằng.    . http://www.cadviet.com/forum/topic/5124-hoi-ve-ham-error/

     

    Đoạn 2: Lisp viết theo nghĩa Thông-Dịch: Đọc đến đâu- dịch đến đó: Nếu bạn ko đọc được gì giải thích có nghĩa lí gì ????  :(  :(

    Em xin cảm ơn anh đã giải đáp những thắc mắc của em. Em mới tìm hiểu chỉ được vài cái nên chưa hiểu được nhiều. Anh Danh Cong cho em hỏi về đoạn lips thứ 2 đó thưa anh.Em tìm thấy nó trong 1 đoạn LIPS nhưng không hiểu được ý nghĩa của đoạn LIPS này. Theo em có đọc qua mấy hàm load_dialog, start_dialog, unload_dialog nhưng mục đích của đoạn này để tạo hộp thoại hả thưa anh và biến RES đó thưa anh, nó có thể bằng 0 hoặc bằng 1 khi nào vậy ạ. Mong a chỉ giáo giúp em với ạ. em xin cảm ơn anh


  6. Em xin chào các anh/chị. em có một số đoạn lips ko hiểu về cách hoạt động và nội dung. Mong anh/chị giúp đỡ em với

    đoạn1:

    (setq olderr *error*)
    (defun *error* (msg)
    (princ "\nError: ")
    (princ msg)
    (princ)
    )
    đoạn 2:
    (progn (close f_in)
    (setq KKK (load_dialog "TTUC.DCL"))
    (new_dialog "ttuc" KKK)
    (setq RES (start_dialog))
    (unload_dialog KKK)
    (cond
    ((= RES 0) (princ))
    ((= RES 1) 
    (setq xk (- -100 L))
    (setq pk (list xk -60))
    (command "_.MOVE" "all" "" "0,-60" pk)
    (TDoccong)
    )

     


  7. Em xin chào các anh/chị. em có một số đoạn lips ko hiểu về cách hoạt động và nội dung. Mong anh/chị giúp đỡ em với

    đoạn1:

    (setq olderr *error*)
    (defun *error* (msg)
    (princ "\nError: ")
    (princ msg)
    (princ)
    )
    đoạn 2:
    (progn (close f_in)
    (setq KKK (load_dialog "TTUC.DCL"))
    (new_dialog "ttuc" KKK)
    (setq RES (start_dialog))
    (unload_dialog KKK)
    (cond
    ((= RES 0) (princ))
    ((= RES 1) 
    (setq xk (- -100 L))
    (setq pk (list xk -60))
    (command "_.MOVE" "all" "" "0,-60" pk)
    (TDoccong)
    )

     


  8. Xin chào các bác. Em định tạo file LIPS để chèn các block có sẵn vào bản vẽ CAD bất kỳ. Nhưng khó khăn của em là phải quan tâm người ta dùng ở hệ đơn vị nào (Inches hay Meter). Em có các Block theo Meter hết nên khi chèn vào phải chỉnh đơn vị bằng thủ công rồi dùng  LIPS chèn vào. Em có mò mẫm câu lệnh

    (command "_.UNITS" "2" "2" "1" "2" "" "")

    Nhưng không đổi đc từ Inches sang Meter. Các bác giúp em với ạ. Em xin cảm ơn và chúc các bác sức khỏe.


  9. Em xin chào các Anh Em trong diễn đàn. Chúc sức khỏe và thành công trong công việc  của mọi người. Em muốn hỏi các Anh về Lips cách lấy Text cao độ từ TNCT. Em có các mặt cắt TNCT và có cao độ thiết kế như trong hình( các TNCT có vị trí cao độ như trên và giống nhau về cách bố trí) Em muốn lấy đồng loạt các cao độ khoanh màu như Hình do có nhiều TNCT quá. Em đang nghĩ về thuật toán Quét chon các TNCT sẽ nhận theo tên cọc và lấy cao độ của những vị trí tương ứng Nhưng khả năng hạn hẹp về LiPS. Mong các anh giúp đỡ. Em xin cảm ơn rất nhiều


  10. Xin chào các bác. Em có được 2 lý trình của 2 cọc trên trắc ngang và có 1 số lý trình bất kỳ. điều em cần tìm là tự dò tìm và sắp xếp theo thứ tự của các lý trình bất kì đó nằm giữa 2 lý trình trên trắc ngang.  Mong được sự giúp đỡ của các bác. Em xin cảm ơn


  11.  

    Mấy hôm nay bận nên Rep bạn hơi muộn ^^

    Chúc công việc suôn sẻ !

    ;lisp trai vai dia
    ;=================================
    (defun MakeLWPolyline (listpoint closed Linetype LTScale Layer Color xdata / Lst)	
    (setq Lst (list '(0 . "LWPOLYLINE")'(100 . "AcDbEntity")									
    				(cons 8 (if Layer Layer (getvar "Clayer")))								  
    				(cons 6 (if Linetype Linetype "bylayer"))									
    				(cons 48 (if LTScale LTScale 1))									
    				(cons 62 (if Color Color 256))									
    				'(100 . "AcDbPolyline")									
    				(cons 90 (length listpoint))									
    				(cons 70 (if closed 1 0))))	
    (foreach PP listpoint	
    	(setq Lst (append Lst (list (cons 10 PP))))
    	)	
    				(if xdata (setq Lst (append lst (list (cons -3 (list xdata))))))	
    				(entmakex Lst)
    )	;end
    ;===================================
    (defun get_lst_vertex (PL / lst)
    	(setq lst (mapcar 'cdr (vl-remove-if-not '(lambda (x) (= 10 (car x))) (entget PL))))
    	(if (< (car (car lst)) (car (last lst))) lst (reverse lst))
    )
    ;=============================================================================================
    (defun c:TRAI ( / cmd ss_coc ins_point ss lst_ver len i)
    (setq cmd (getvar 'cmdecho))
    (setvar 'cmdecho 0)
    (prompt "\nQuet chon trac ngang: ")
    (setq ss_coc (ssget '((0 . "TEXT") (8 . "entdauco") (1 . "C*c:*"))))
    (if ss_coc 
    	(progn
    		(setq ss_coc (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss_coc))))
    		(foreach coc ss_coc
    			(setq ins_point (cdr (assoc 11 (entget coc)))
    				  ss (ssget "_W" (list (- (car ins_point) 17) (- (cadr ins_point) 15)) (list (+ (car ins_point) 17) (cadr ins_point))
    						(list (cons 8 "VetHuuCo,Danh cap"))))
    			(if ss
    				(progn
    					(setq ss (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))
    						  ss (vl-sort ss '(lambda (x y)  (< (car (car (get_lst_vertex x))) (car (car (get_lst_vertex y))))))
    					)
    					(setq lst_ver (get_lst_vertex (car ss)))
    					(cond 
    						((> (setq len (length ss)) 1)
    							(setq i 0)
    							(repeat (- len 1)
    								(setq lst_ver (reverse (cdr (reverse lst_ver)))
    									lst_ver (append lst_ver (cdr (get_lst_vertex (nth (setq i (1+ i)) ss))))
    								)
    							)
    						)
    					)
    					(setq lst_ver 
    						(append 
    							(list (list (1+ (car (car lst_ver))) (cadr (car lst_ver))))
    							lst_ver 
    							(list (list (1- (car (last lst_ver))) (cadr (last lst_ver))))
    						))
    					(MakeLWPolyline lst_ver nil nil nil "Vai_dia_KT" 4 nil)
    				)
    			)
    		)
    	)
    )
    (setvar 'cmdecho cmd)
    (princ)
    )
    

    em cảm ơn bác.rút ngắn thời gian rất nhiều, em chỉ mới tập tành chưa hiểu nhiều, bác có thể cho em biết sơ về thuật toán ko ạ.chúc bác sức khỏe


  12. - Nếu bạn cần ý tưởng: Trong lisp có thể dùng  (acet-geom-vertex-list en) để lấy đỉnh của PL (là một cách).

    - Nếu bạn cần code: Phiền bạn up thêm file CAD có vài trắc ngang như trên

    P/s: Cái hình nhìn đau mắt quá :D

    em gửi bác xem hộ vài trắc ngang, mong bác chỉ giáo ạ

    http://www.cadviet.com/upfiles/6/154132_drawing1.dwg

×